Sun*_*nny 11 docker docker-compose
我的 compose-yaml 有 3 个服务,当我使用 docker-compose up 时,我能够成功运行容器。现在我想将这 3 个容器构建成单个图像。是否可以?这是我的 compose-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
Run Code Online (Sandbox Code Playgroud)
根本不建议这样做。您将需要对每个图像进行逆向工程,并将所需的二进制文件/文件复制到组合图像中。方法是使用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
...
Run Code Online (Sandbox Code Playgroud)
这种方法非常棘手,您需要对每个图像进行逆向工程,以找出需要将哪些文件/文件夹/配置复制到组合图像上......
或者,您可以从其中一个映像开始,然后使用每个映像的标准安装指南来安装其他程序。
即使您成功了,您也需要在同一个容器中启动多个进程,这是不推荐的,并且会带来许多复杂性。
| 归档时间: |
|
| 查看次数: |
7770 次 |
| 最近记录: |