我想创建一个完整的 Node.js 环境,用于开发任何类型的应用程序(脚本、API 服务、网站等),也使用不同的服务(例如 Mysql、Redis、MongoDB)。我想使用 Docker 来完成此操作,以便拥有一个可移植的多操作系统环境。
我创建了一个 Dockerfile
对于安装 Node.js 的容器:
FROM node:8-slim
WORKDIR /app
COPY . /app
RUN yarn install
EXPOSE 80
CMD [ "yarn", "start" ]
还有一个docker-compose.yml
文件添加我需要使用的服务:
version: "3"
services:
app:
build: ./
volumes:
- "./app:/app"
- "/app/node_modules"
ports:
- "8080:80"
networks:
- webnet
mysql:
...
redis:
...
networks:
webnet:
我想问您实现这些目标的最佳模式是什么:
在主机和 Docker 容器之间共享所有工作目录,以便编辑文件并查看双方的更改。
拥有
node_modules
在主机和 docker 容器上都可见的目录,以便也可以从主机中的 IDE 进行调试。由于我想要一个适合每个项目的开发环境,因此我会有一个容器,一旦启动,我就可以使用
docker-compose exec app bash
这样的命令登录。 。因此,我尝试找到另一种方法来保持容器处于事件状态,而不是运行 Node.js 服务器或使用CMD ['tail', '-f', '/d/null']
的技巧。
谢谢您的建议!
最佳答案
在主机和 Docker 容器之间共享所有工作目录,以便编辑文件并查看双方的更改。
- 使用 -v volume 选项共享 docker 容器内的主机卷
让 node_modules 目录在主机和 docker 容器上都可见,以便也可以从主机中的 IDE 进行调试。
- 同上
因为我想要一个适合每个项目的开发环境,所以我会有一个容器,一旦启动,我就可以使用 docker-compose exec app bash 等命令登录。所以我试图找到另一种方法来保持容器的事件,而不是运行 Node.js 服务器或使用 CMD ['tail', '-f', '/d/null']
docker-compose.yml 为交互模式定义这些
stdin_open: true tty:正确
然后使用命令 docker exec -it 运行容器
关于node.js - 如何使用 Docker Compose 设置 Node.js 开发环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55978658/