Docker包含两个文件

时间:2016-06-29 13:06:24

标签: docker docker-compose

我在单独的文件夹中有两个docker-compose.yml个文件。

我想在同一个命令中运行其中两个,以便两者的服务能够相互通信。

但是,当我转到最低共同路径祖先并尝试使用这两个文件运行docker-compose时,会发生以下情况:

$ docker-compose -f ./api-folder/docker-compose.yml -f ./front-folder/docker-compose.yml up -d
ERROR: build path /projects/front-folder/api either does not exist, is not accessible, or is not a valid URL.

$ docker-compose -f ./front-folder/docker-compose.yml -f ./api-folder/docker-compose.yml up -d
ERROR: build path /projects/api-folder/app either does not exist, is not accessible, or is not a valid URL.

以下是两个docker-compose.yml文件:

/projects/front-folder/docker-compose.yml

version: '2'

services:

    app:
        restart: always
        build: ./app
        environment:
            NODE_ENV: 'dev'
        ports:
            - "4400:4400"
        volumes:
            - ./app:/usr/src/app

    nginx:
        restart: always
        build: ./nginx
        volumes:
            - ./logs:/usr/local/var/log/nginx
        links:
            - app
        ports:
            - "80:80"

/projects/api-folder/docker-compose.yml

version: '2'

services:

    api:
        restart: always
        build: ./api
        expose:
            - "4600"
        volumes:
            - ./api:/usr/src/app
            - ./logs:/logs

    nginx:
        restart: always
        build: ./nginx
        volumes:
            - ./logs:/usr/local/var/log/nginx
        links:
            - api
        ports:
            - "81:80"
        networks:
            - hackerz

目录结构:

- /projects
    - /front-folder
        - /app
            Dockerfile
        - /nginx
            Dockerfile
        docker-compose.yml
    - /api-folder
        - /api
            Dockerfile
        - /nginx
            Dockerfile
        docker-compose.yml

我猜测问题出在build路径上,但我不明白的是:

  • 为什么Docker坚持在build: ./api或其他方面搜索/front-folder
  • 如何规避此问题并能够同时运行这两个文件?

2 个答案:

答案 0 :(得分:0)

这不是作曲的方式(按设计)。请在此处查看我的评论:https://github.com/docker/compose/issues/3530#issuecomment-222490501

答案 1 :(得分:0)

DOCKERFILE 备用Dockerfile。

Compose使用一个替代文件进行构建。还必须指定一个构建路径。

service3:
    build:
      context: .
      dockerfile: Dockerfile-alternate

docker撰写提供自定义文件的构建