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

标签 node.js docker docker-compose

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

相关文章:

c++ - Docker compose libstdc++.so.6 GLIBCXX_3.4.21 未找到

docker - 在另一个容器的构建过程中无法解析Docker容器

node.js - Heroku 在 60 秒内绑定(bind) PORT 失败

node.js - 保存字节数组到文件 Node JS

javascript - JS : How would this function get triggered without attaching an event listener on it?

javascript - Express - 在单个请求中向浏览器发送页面和自定义数据?

docker - Snakemake + docker 示例,如何使用卷

json - 在 Docker Windows 上的 Keycloak 中添加 Realm 时出现意外的服务器错误

linux - docker compose : Error while loading shared libraries: libz. so.1:无法从共享对象映射段:不允许操作

docker - Helm init连接超时 Blob