关于我 壹文 项目 三五好友
使用 Docker 打包 Express 程序 2024-04-19

使用 Docker 打包 Express 程序,并提交到 Docker 仓库

一、创建 Dockerfile

在 Express 项目的根目录下创建一个名为 Dockerfile 的文件

# 使用官方 Node.js 镜像作为基础镜像
FROM node:18-alpine

# 工作目录设置为 /app
WORKDIR /app

# 将当前目录下的所有文件复制到工作目录中
COPY . .

# 安装依赖
RUN npm ci --production

# 设置环境变量
ENV NODE_ENV production

# 暴露 Express 应用程序的端口
EXPOSE 3000

# 启动 Express 应用程序
CMD ["node", "app.js"]

二、构建 Docker 镜像

在终端中,进入项目根目录

docker build -t my-express-app-name:latest .

这里 -t 参数用于指定镜像的名称(my-express-app-name)和标签(latest)。构建完成后,您将拥有一个名为 my-express-app-name:latest 的 Docker 镜像

三、登录 Docker 仓库

然后在终端中使用以下命令登录 Docker 仓库

docker login

四、推送镜像到 Docker 仓库

将构建好的镜像推送至 Docker Hub。假设您的 Docker Hub 用户名为 myusername,将镜像推送至 myusername/my-express-app 仓库

docker tag my-express-app:latest myusername/my-express-app:latest
docker push myusername/my-express-app:latest

五、在服务器上部署

1、拉取镜像

docker pull myusername/my-express-app:latest

2、运行容器

使用以下命令创建并启动一个 Docker 容器

docker run -d --name my-express-app -p 80:3000 myusername/my-express-app:latest
  • -d:让容器在后台运行。
  • --name my-express-app:为容器指定一个名称。
  • -p 80:3000:将主机的 80 端口映射到容器的 3000 端口,使得外部可以通过 80 端口访问 Express 应用程序。

至此,Express 应用程序已经部署到目标服务器,并可通过服务器的 IP 地址(如 http://server_ip)访问。

六、注意:

如果 M 芯片的 Macbook 在构建镜像的时候出现下面的错误

[+] Building 0.9s (1/2)                                                                        docker:desktop-linux
[+] Building 1.0s (2/2) FINISHED                                                               docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                           0.0s
 => => transferring dockerfile: 412B                                                                           0.0s
 => ERROR [internal] load metadata for docker.io/library/node:18-alpine                                        0.9s
------
 > [internal] load metadata for docker.io/library/node:18-alpine:
------
Dockerfile:2
--------------------
   1 |     # 使用官方 Node.js 镜像作为基础镜像
   2 | >>> FROM node:18-alpine
   3 |
   4 |     # 工作目录设置为 /app
--------------------
ERROR: failed to solve: node:18-alpine: error getting credentials - err: exit status 1, out: ``

请用下面的方法解决:

sudo nano ~/.docker/config.json

需要更改 docker 配置文件,将“credsStore”的“桌面”,更改为“osxkeychain”

Not-By-AI