gpt4 book ai didi

docker - 基于 docker compose 容器构建单个镜像

转载 作者:行者123 更新时间:2023-12-02 18:04:06 25 4
gpt4 key购买 nike

我的 compose-yaml 有 3 个服务
当我使用 docker-compose up 时,我能够成功运行容器。
现在我想将这 3 个容器构建为单个图像。是否可以?
这是我的
撰写-yaml

version: '2'

services:
tomcat:
container_name: tomcatcomposejdk
build: .
image: 'apexits/ubuntu-oracle-jdk8-tomcat9'
ports:
- "8787:8080"
- "5003:5003"
networks:
b:
ipv4_address: 10.5.0.6
expose:
- "8787"
- "5003"

mysql:
container_name: mysqlcompose
build: .
image: 'mysql:5.6.36'
ports:
- "3306:3306"
expose:
- "3306"
networks:
b:
ipv4_address: 10.5.0.7
environment:
MYSQL_DATABASE: "bird251"
MYSQL_ROOT_PASSWORD: "root"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
volumes:
- ./BIRD251.sql:/tmp/BIRD251.sql
- ./import.sh:/tmp/import.sh

elasticsearch:
container_name: escompose
build: .
image: 'elasticsearch:2.3.4'
ports:
- "9200:9200"
- "9300:9300"
expose:
- "9200"
- "9300"
networks:
b:
ipv4_address: 10.5.0.8

networks:
b:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1

最佳答案

完全不推荐这样做。您需要对每个图像进行逆向工程并将所需的二进制文件/文件复制到组合图像中。方法是使用 docker multistage build :

FROM apexits/ubuntu-oracle-jdk8-tomcat9 as tomcat

FROM mysql:5.6.36 as mysql

FROM elasticsearch:2.3.4
COPY --from=tomcat /.../tomcat-installtion .../tomcat-installation
COPY --from=mysql /.../mysql-installtion .../mysql-installation
...

这种方法非常技巧,您需要对每个图像进行逆向工程以找出需要将哪些文件/文件夹/配置复制到组合图像上...

或者,您可以从其中一个镜像开始,然后使用每个镜像的标准安装指南安装其他程序。

即使你成功了,你也需要在同一个容器中启动多个进程,这是不推荐的,并且会引入许多复杂性。

关于docker - 基于 docker compose 容器构建单个镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47485317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com