我想创建一个完整的Node.js环境,以便使用不同的服务(例如Mysql,Redis,MongoDB)开发任何类型的应用程序(脚本,api服务,网站等)。我想使用Docker来做到这一点,以便拥有一个可移植的多操作系统环境。
我为安装Node.js的容器创建了一个Dockerfile
:
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']
谢谢你的建议!
答案 0 :(得分:2)
具有在主机和docker容器之间共享的所有工作目录,以便编辑文件并查看双方的更改。
在主机和docker容器上都可见node_modules目录,以便也可以从主机中的IDE进行调试。
因为我想要一个适合每个项目的开发环境,所以我会有一个容器,一旦启动,我就可以使用docker-compose exec app bash这样的命令登录。因此,我正在尝试寻找另一种保持容器存活的方法,而不是运行Node.js服务器或使用CMD的技巧['tail','-f','/ d / null']
docker-compose.yml为交互模式定义它们
stdin_open:true tty:是
然后使用命令docker exec -it
运行容器