如何使用Docker Compose设置Node.js开发环境

时间:2019-05-04 01:05:14

标签: node.js docker docker-compose

我想创建一个完整的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']

  • 的技巧

谢谢你的建议!

1 个答案:

答案 0 :(得分:2)

具有在主机和docker容器之间共享的所有工作目录,以便编辑文件并查看双方的更改。

  • 使用-v volume选项在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

运行容器