如何在一个docker-compose文件中使用两个Dockerfile?

时间:2019-07-15 21:09:48

标签: docker docker-compose dockerfile

version: '2'

services:
  service1:
    build:
    image: company/service1:v1
    context: .
      - dockerfile: Dockerfile-service1

  service2:
    build: .
    image: company/service2:v1
    links:
      - service1

我有两个Dockerfile,一个叫做Dockerfile,另一个叫Dockerfile-service1,它们都与/opt在同一目录(docker-compose.yml)中。

我需要构建两个图像并启动容器并将其链接。为了使我现在能够执行此操作,我将Dockerfile-service1移至另一个目录并将其重命名为Dockerfile,然后运行如下构建命令:docker build -t company/service1:v1

然后,我再次进入/ opt目录并构建service2映像并启动两个容器:docker build . --no-cache -t company/service2:v1 && docker-compose up -d

必须有一种更好的方法,以便我可以运行一个同时执行两个命令的命令,我只是不知道该怎么做。

如何解决此问题?

2 个答案:

答案 0 :(得分:1)

不太确定您要做什么,但是不需要重命名docker文件。在docker-compose中,您可以像这样:

build: 
  context: ./path_to_dockerfile 
  dockerfile: Dockerfile-service1

然后我使用以下命令运行docker-compose.yml中的所有内容:

docker-compose build
docker-compose up -d

答案 1 :(得分:1)

这可以做到:

version: '2'

services:
  service1:
    container_name: service1
    build:
    context: .
      dockerfile: ./Dockerfile-service1

  service2:
    container_name: service2
    build:
    context: .
      dockerfile: ./Dockerfile
    links:
      - service1

或者如果您已经构建了service-2图像,则为:

version: '2'

services:
  service1:
    container_name: service1
    build:
    context: .
      dockerfile: ./Dockerfile-service1

  service2:
    container_name: service2
    image: company/service2:v1
    links:
      - service1
docker-compose up -d