【发布时间】:2018-02-17 12:28:40
【问题描述】:
我希望能够在两个容器中运行两个独立的应用程序 - 每个独立应用程序一个。然后这两个应用程序应该能够与将容纳 MongoDB 的第三个容器进行通信。
-
我本地机器上的文件夹结构
/Users/me/Dev: Dockerfile, docker-compose.yml /Users/me/Dev/App1: with source code and package.json for app1 /Users/me/Dev/App2: with source code and package.json for app2 /Users/me/Dev/data/db: I wanna keep datafile for Mongo -
dockerfile - 但老实说,这两个应用程序重复两次看起来不太合适。 (这是我第一次使用 docker,所以还不熟悉如何为我的场景最好地准备 Dockerfile)
FROM node:8.9.1 WORKDIR ./app1/ COPY ./package.json ./app1/ RUN npm install CMD npm start COPY ./app1/ ./app1/ EXPOSE 8081 # FROM node:8.9.1 WORKDIR ./app2/ COPY ./package.json ./app2/ RUN npm install CMD npm start COPY ./app2/ ./app2/ EXPOSE 8082 -
docker-compose.yml
version: '2' services: app1: build: . volumes: - .:/app1 ports: - "8082:8082" links: - mongo depends_on: - mongo # app2: # build: . # volumes: # - .:./app2 # ports: # - "8081:8081" # links: # - mongo # depends_on: # - mongo mongo: image: mongo:3.4.10 volumes: - './dev/data/db:/data/db' ports: - "27017:27017"
几个问题: 例如,在 docker-compose build 上,我得到了 - 错误:服务 'app1' 无法构建:复制失败:stat /var/lib/docker/tmp/docker-builder287108072/package.json:没有这样的文件或目录
即使我尝试了多种方法在 Dockerfile 和 d-compose 中提供路径,我仍然不相信这会奏效。
所以我需要一些关于如何在我的主 DEV 文件夹(如上所述)中准备 Dockerfile 和 docker compose 的指导,以便 docker 将在同一个 docker 网络上启动 3 个容器(app1、app2、mongo)以进行通信彼此。
【问题讨论】:
-
首先创建 docker 镜像。然后编写 docker-compose.yml 文件来运行应用程序。而不是建造。这是一个很好的做法。
标签: mongodb docker docker-compose dockerfile