赞
踩
引言(需求)
容器的编排(先后运行顺序)至关重要
项目角度:管理一组项目容器
功能
docker-compose.yml
配置文件来定义一组相关联的应用容器为一个项目重要概念
docker-compose.yml
文件中定义apt安装
sudo apt install -y docker-compose
pip安装
sudo pip3 install docker-compose
docker-compose -v
# 输出信息如下:
docker-compose version 1.25.0, build unknown
# 查看本地版本
docker -v
# Docker version 24.0.7
# docker-compose 指定vision版本3.2,意味着部署服务器docker engin引擎版本至少高于17.04.0
# 具体对应关系官网查看
# https://docs.docker.com/compose/compose-file/compose-file-v3/
# 版本不支持会报如下错误
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
mkdir -p ems/docker
cd ems/docker
docker-compose.yml
# docker-compose 版本号
version: "3.3"
# 一个应用服务
services:
tomcat01:
# 利用本地仓库已经构建好的镜像,如果没找到会自动尝试hub上pull
image: tomcat:8.0
# 容器名称 --name
container_name: tomcat01
# 做端口映射 -p
ports:
- "8080:8080"
# - "8081:8081" # 可以映射多个端口
tomcat02:
image: tomcat:8.0
container_name: tomcat02
ports:
- "8081:8080"
redis01:
image: redis:5.0.12
container_name: redis01
ports:
- "6379:6379"
mysql01:
image: mysql:5.6
container_name: mysql01
# 给当前容器指定环境参数 类似于 docker run -e MYPASSWORD=root redis:5.0.12 -d
ports:
- "3306:3306"
environment:
- "MYSQL_ROOT_PASSWORD=ROOT" # 推荐写法
- MYSQL_ROOT_PASSWORD:root
# 指定同步数据卷 -v ./data路径一定要先存在
volumes:
# 相对或绝对路径
# - ./data:/var/lib/mysql
# 别名挂载数据卷一定要先申明
# ERROR: Named volume "data:/var/lib/mysql:rw" is used in service "mysql01" but no declaration was found in the volumes section
- data:/var/lib/mysql
# 申明数据卷别名
volumes:
data:
# -d 表示后台启动容器
docker-compose up -d
# 直接bash面板启动
docker-compose up
http://192.168.18.224:8080/
docker-compose down
清除上一次的缓存配置(连同创建的容器一起清除)
官方参考文档
https://docs.docker.com/compose/compose-file/build/
Dockerfile
文件# 指定基础镜像
FROM openjdk:8-jre
# ARG特殊,他不是有效指令,可以在FROM之前
ARG buildno
ARG password
# 暴露端口(可以在容器服务中暴露)
EXPOSE 8081
# 设置环境变量
ENV APP_PATH=/apps
# 指定工作目录
WORKDIR ${APP_PATH}
# 拷贝文件到镜像中
COPY apps.jar ${APP_PATH}
# 使用数据卷
VOLUME ${APP_PATH}
# 运行jar包 java -jar apps.jar
ENTRYPOINT [ "java", "jar" ]
CMD [ "apps.jar" ]
默认情况下,Dockerfile
中指定的选项(例如,CMD,EXPOSE,VOLUME,ENV)都被遵守,不需要在docker-compose.yml
中再次指定它们
docker-compose.yml
文件version: "3.3"
services:
tomcat01:
image: tomcat:8.0
container_name: tomcat01
ports:
- "8080:8080"
networks:
- sensiz
restart: always
apps:
# 通过Docjerfile文件指定镜像
# build: ./ # 可以直接指定,其他参数默认
build:
# 指定dockerfile上下文目录,也可以是git仓库的URL
context: ./
# 指定Dockerfile的文件名,如果为默认值Dockerfile可以不写
dockerfile: Dockerfile
# # 给docker中传入环境变量参数
# args:
# buildno: 1
ports:
- 8081:8080
cap_add:
- ALL
command: ["test.jar"]
# 先启动顺序tomcat01 mysql resdi,再启动apps
depends_on:
- tomcat01
- mysql01
# - redis
networks:
- sensiz
mysql01:
image: mysql:5.6
# 数据卷别名要首先申明
volumes:
- data:/var/lib/mysql
ports:
- "3303:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
# env_file:
# - ./ENV_FILE.env
expose:
- 8888
# 声明数据卷别名
volumes:
data:
# 申明使用的网桥
networks:
sensiz:
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。