f5e*_*05f 19 docker dockerfile docker-compose
假设我有一组依赖于共同基本图像的图像:
base(这只是一组常见的依赖项)
FROM ubuntu:16.04
ENV FOO 1
Run Code Online (Sandbox Code Playgroud)child1
FROM mybaseimage # where mybaseimage corresponds to base
CMD ["bar1_command"]
Run Code Online (Sandbox Code Playgroud)的child2
FROM mybaseimage # where mybaseimage corresponds to base
CMD ["bar2_command"]
Run Code Online (Sandbox Code Playgroud)是否可以创建无需运行即可docker-compose构建的文件base?让我们说我有以下依赖:
version: '2'
services:
child1:
build: ./path-to-child1-dockerfile
services:
child2:
build: ./path-to-child2-dockerfile
depends_on:
- child1
Run Code Online (Sandbox Code Playgroud)
base即使没有明确启动,我也想构建.这样的事情甚至可能吗?或者我应该只使用外部Makefile来构建依赖项?
build_base:
docker build -t mybaseimage mybaseimage
build_all: build_base
docker-compose build
Run Code Online (Sandbox Code Playgroud)
Bir*_*abs 14
这是可能的.有一种解决方法.你很接近,但你错过了明确的图像标签(因此你很难在子图像上声明你继承了哪个图像).
version: '3.2'
services:
base:
image: mybaseimage
build: ./path-to-base-dockerfile
child1:
build: ./path-to-child1-dockerfile
depends_on:
- base
child2:
build: ./path-to-child2-dockerfile
depends_on:
- base
Run Code Online (Sandbox Code Playgroud)
假设您没有构建图像.你跑docker-compose up.将发生以下事情:
mybaseimage.它知道如何构建mybaseimage(你给它一个构建路径),所以它现在将构建它,并将其标记为mybaseimage.base服务.
base,使其立即退出,或者没有入口点.因为我们实际上并不希望它运行此服务.child1.它知道如何构建child1(你给它一个构建路径),所以它现在将构建它,并将其标记为child1.child1服务接下来docker-compose up会更简单(我们有标记的图像可用,所以我们跳过所有构建步骤).
如果您已经有标记图像,并且想要重建:使用docker-compose build告诉它构建所有图像(是的,基础和子项都将被重建).
| 归档时间: |
|
| 查看次数: |
6268 次 |
| 最近记录: |