我在使用 NODE.JS 映像运行多级 docker-compose 时遇到一些问题。 当构建/运行多阶段 docker-compose 时,Node 容器会在循环中重新启动,但是如果我使用具有以下参数的 Docker Run 来构建相同的映像,则它可以正常工作
Docker 运行:
docker run \
-it \
--name webportal
--rm \
-v ${PWD}:/app \
-v /app/node_modules \
-p 3001:3000 \
-e CHOKIDAR_USEPOLLING=true \
webnodeimg
它在 docker compose 文件中的阶段是:
web:
build:
context: ./web/
dockerfile: ./Dockerfile
container_name: webportal
volumes:
- .:/app
- /app/node_modules
ports:
- '3001:3000'
environment:
- CHOKIDAR_USEPOLLING=true
文件夹结构如下
Root
├── docker-compose.yml
├── api
| ├── Other Folders...
│ ├── Dockerfile
│ └── Jenkinsfile
├── web
│ ├── debug.log
│ ├── docker-compose.yml
│ ├── Dockerfile
│ ├── Dockerfile-test
│ ├── Jenkinsfile
│ ├── node_modules
│ ├── package.json
│ ├── package-lock.json
│ ├── public
│ ├── README.md
│ ├── src
│ └── tsconfig.json
└──
节点 Dockerfile:
FROM node:lts
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm install
RUN npm install [email protected] -g --silent
COPY . ./
EXPOSE 3000
CMD ["npm", "start"]
检查日志时,我看到以下内容
> [email protected] start /app
> react-scripts start
ℹ 「wds」: Project is running at http://172.26.0.2/
ℹ 「wds」: webpack output is served from
ℹ 「wds」: Content not from webpack is served from /app/public
ℹ 「wds」: 404s will fallback to /
Starting the development server...
为了避免在运行后使用 docker-compose 退出来构建 docker 容器,我在 docker compose 中添加了“stdin_open: true”,现在工作正常