Rob*_*ert 172 orchestration docker docker-compose
我正在使用docker-compose来创建我的开发环境.我想构建一个特定的图像,但我不知道如何为该图像设置名称.
wildfly:
build: /path/to/dir/Dockerfile
container_name: wildfly_server
ports:
- 9990:9990
- 80:8080
environment:
- MYSQL_HOST=mysql_server
- MONGO_HOST=mongo_server
- ELASTIC_HOST=elasticsearch_server
volumes:
- /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
links:
- mysql:mysql_server
- mongo:mongo_server
- elasticsearch:elasticsearch_server
Run Code Online (Sandbox Code Playgroud)
当我执行docker-compose一切正常时,我得到一个新图像的随机名称.是否可以为构建映像设置名称?
Jas*_*ite 150
对于docker-compose版本2文件格式,您可以为一个服务构建和标记图像,然后将该相同的构建图像用于另一个服务.
对于我的情况,我想建立一个包含2个节点的弹性搜索集群,它们都需要使用相同的图像,但配置为以不同的方式运行.我还想从我自己的Dockerfile构建自己的自定义elasticsearch图像.所以这就是我所做的(docker-compose.yml):
version: '2'
services:
es-master:
build: ./elasticsearch
image: porter/elasticsearch
ports:
- "9200:9200"
container_name: es_master
es-node:
image: porter/elasticsearch
depends_on:
- es-master
ports:
- "9200"
command: elasticsearch --discovery.zen.ping.unicast.hosts=es_master
Run Code Online (Sandbox Code Playgroud)
您可以在第一个服务定义"es-master"中看到,我使用"build"选项从./elasticsearch中的Dockerfile构建映像.我使用"image"选项标记名为"porter/elasticsearch"的图像.然后,我使用"image"选项在"es-node"服务定义中引用此构建的映像,并使用"depends_on"确保构建并运行其他容器"es-master".
aru*_*net 54
如果您使用的是新文件格式,现在可以指定构建和图像键.
docker-compose build将构建图像并使用您指定的名称对其进行标记,同时docker-compose pull尝试将其拉出.
所以你docker-compose.yml会的
version: '2'
services:
wildfly:
build: /path/to/dir/Dockerfile
image: wildfly_server
ports:
- 9990:9990
- 80:8080
Run Code Online (Sandbox Code Playgroud)
更新docker-compose
sudo pip install -U docker-compose==1.6.0
Run Code Online (Sandbox Code Playgroud)
Wer*_*ght 47
docker-compose生成的图像名称默认取决于文件夹名称,但您可以使用--project-name参数覆盖它:
$ docker-compose --project-name foo build bar
$ docker images foo_bar
Run Code Online (Sandbox Code Playgroud)
一旦docker-compose 1.6.0结束,您可以指定build:并image:拥有一个明确的图像名称(请参阅arulraj.net的答案).
第三个是从容器创建一个图像:
$ docker-compose up -d bar
$ docker commit $(docker-compose ps -q bar) foo_bar
$ docker-compose rm -f bar
Run Code Online (Sandbox Code Playgroud)
meo*_*ww- 19
根据您的使用情况,您可以使用已创建的图像并在其中指定其名称docker-compose.
我们有一个生产用例,我们的CI服务器构建一个名为Docker的映像.(docker build -t <specific_image_name> .).一旦指定了指定的图像,我们docker-compose总是建立在特定图像的基础上.这允许几种不同的可能性:
1-您可以确保无论您在何处运行docker-compose,您都将始终使用该特定映像的最新版本.
2-您可以在docker-compose文件中指定多个命名图像,并通过上一个构建步骤自动连接它们.
因此,如果您的图像已经构建,则可以使用该图像命名docker-compose.删除build并指定image:
wildfly:
image: my_custom_wildfly_image
container_name: wildfly_server
ports:
- 9990:9990
- 80:8080
environment:
- MYSQL_HOST=mysql_server
- MONGO_HOST=mongo_server
- ELASTIC_HOST=elasticsearch_server
volumes:
- /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
links:
- mysql:mysql_server
- mongo:mongo_server
- elasticsearch:elasticsearch_server
Run Code Online (Sandbox Code Playgroud)
Tar*_*han 16
根据 Docker compose 3.9 版本,您可以使用image: myapp:tag来指定名称和标签。
version: "3.9"
services:
webapp:
build:
context: .
dockerfile: Dockerfile
image: webapp:tag
Run Code Online (Sandbox Code Playgroud)
参考:https : //docs.docker.com/compose/compose-file/compose-file-v3/
构建映像后,请执行以下操作:
docker tag <image id> mynewtag:version
之后,你会看到你的形象不再命名<none>,当你去docker images。
| 归档时间: |
|
| 查看次数: |
191227 次 |
| 最近记录: |