准备
# 创建项目文件夹
$ mkdir my-express-app && cd my-express-app
# 初始化package.json
$ npm init -y
# 安装express
$ npm i express
# 创建入口文件
$ mkdir src && cd src && touch src/index.js
src/index.js
const express = require('express');
const app = express();
app.get('/', function (req, res) {
res.send('Hello World');
})
app.listen(3000);
创建Dockerfile文件
$ cd my-express-app && touch Dockerfile
Dockerfile内容如下:
# 设置node18基础镜像
FROM node:18-alpine
# 设置工作目录为app
WORKDIR /app
# 复制当前目录下的所有文件到app目录
COPY . .
# 运行npm install命令
RUN npm install --omit=dev
## 启动容器时指定默认执行的命令
CMD ["node", "src/index.js"]
## 暴露3000端口
EXPOSE 3000
构建镜像
# 构建一个REPOSITORY为express-hello, Tag为v1.0的镜像
$ docker build -t express-hello:v1.0 .
启动容器
$ docker run -itd -p 3001:3000 express-hello:v1.0
# 测试
$ curl localhost:3001
Hello World