用compose命令构建嵌套的docker镜像

car*_*ari 3 docker docker-compose

我正在用Docker-compose建造一盏灯.

在我的docker-compose.yml中,我有以下内容:

ubuntu-base:
    build: ./ubuntu-base

webserver-base:
    build: ./webserver-base
Run Code Online (Sandbox Code Playgroud)

webserver-base源自基于ubuntu的映像.在基于Web服务器的Dockerfile中:

FROM docker_ubuntu-base
Run Code Online (Sandbox Code Playgroud)

ubuntu-base已建成

FROM ubuntu:14.04
Run Code Online (Sandbox Code Playgroud)

现在,如果我执行docker-compose.yml,它不会构建基于ubuntu的映像,但它尝试构建基于Web服务器的映像并失败,因为它找不到基于ubuntu的映像.

输出:

$ docker-compose up -d
Building webserver-base
Step 1 : FROM docker_ubuntu-base
Pulling repository docker.io/library/docker_ubuntu-base
ERROR: Service 'webserver-base' failed to build: Error: image library/docker_ubuntu-base:latest not found
Run Code Online (Sandbox Code Playgroud)

如果我首先手动构建基于ubuntu的映像,这一切都有效.

为什么它不构建基于ubuntu的图像?

car*_*ari 6

遗憾的是,构建顺序是docker-compose中缺少的功能,现在需要很多个月.

作为解决方法,您可以像这样链接容器:

ubuntu-base:
    build: ./ubuntu-base

webserver-base:
    build: ./webserver-base
    links:
      - ubuntu-base
Run Code Online (Sandbox Code Playgroud)

这样ubuntu-base就可以在webserver-base之前构建.