【发布时间】:2019-09-29 14:19:24
【问题描述】:
接码头工人,演出有点晚了,但迟到总比没有好。
根据一些在线教程,我找到了一个 docker 文件,并为我的第一个微服务节点 + mongo 使用了 docker-compose。
dev 的设置很糟糕,所以现在将实现可信赖的 pm2:https://dev.to/itmayziii/step-by-step-guide-to-setup-node-with-docker-2mc9
生产需要以下内容,但开发人员希望 pm2 实例管理器在文件更改时重新启动..
但我现在有一个明显的问题是如何区分 Dockerfile 中的 dev 和 prod?
Dockerfile
FROM node:12-alpine
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm i
COPY . /usr/src/app
EXPOSE 3000
CMD node ./build/server.js
码头工人撰写
version: "3"
services:
ms-authentication-service:
image: "ms-authentication-image"
depends_on:
- mongodb
build:
dockerfile: Dockerfile
context: .
links:
- mongodb
networks:
- default
ports:
- "8080:8000"
restart: always
mongodb:
image: mongo:4.2
container_name: "ms-authentication-mongo-image"
environment:
MONGO_INITDB_ROOT_USERNAME: bob
MONGO_INITDB_ROOT_PASSWORD: bob
networks:
- default
ports:
- 27017:27017
【问题讨论】:
-
为什么要更改容器内的文件以进行开发?您是否正在在容器中开发此应用程序?我不关注你的用例。
-
在开发期间,我想运行我的
pm2.dev.config.js,它会监视文件构建的文件,从而允许在不重新启动 docker 的情况下进行开发。在产品上,我只想简单地运行node ./build/server.js -
@LawrenceCherone 这不会要求我也必须在生产中使用 docker-compose 吗?这我不需要,因为在生产中 mongodb 是容器中其他地方的服务,因此我不想运行 docker compose。
-
或者我应该在 compose 中设置 1 个,在 dockerfile 中设置 1 个?
标签: node.js docker docker-compose dockerfile