我正在寻找一种使用 Docker、Docker Compose 和 Node.js 在我的项目中同时拥有开发和生产环境的解决方案。
我应该如何处理这个问题呢?
基本上,我想要一个命令来启动我的 Docker 生产环境,以及一个命令来启动我的开发环境(可以使用 nodemon 等工具)。
这是我的 Dockerfile:
FROM node:13-alpine
RUN mkdir /app
WORKDIR /app
COPY . /app
RUN npm install
RUN npm run build
EXPOSE 1234
CMD ["npm", "run", "prod"] # <--- Have a possibility to run something like "npm run dev" here instead
docker-compose.yml
Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。该工具使用 YAML 文件来配置应用程序的服务,并可以在单个命令中启动、停止和重建所有服务。version: "3"
services:
findus:
build: .
ports:
- "1234:1234"
links:
- mongo
container_name: myapp
mongo:
image: mongo
restart: always
ports:
- "4444:4444"
包描述文件(package.json)
// ...
"scripts": {
"build": "tsc",
"dev": "nodemon source/index.ts",
"prod": "node build/index.js"
},
// ...