docker compose 是 docker 官方的开源项目,用来实现对 docker 容器集群的快速编排
下载安装
官网下载地址:点这里
我用的是云服务器,所以就直接用yum安装了,直接执行这两条命令,等安装结束后查看版本,看到版本号表示安装成功
下面还有一种手动安装的方式,因为是访问的github,我的服务器一直访问失败,就只能用上面那种方式了
不使用 compose 部署项目
我这里用一个springboot项目来测试,只写了一个接口,访问redis和mysql
编写dockerfile来构建镜像
-
FROM java:8
-
MAINTAINER vhukze
-
# 指定临时文件夹为/tmp
-
VOLUME /tmp
-
# 将jar包添加到容器中重命名为my-docker.jar
-
ADD docker-test.jar my-docker.jar
-
# 运行jar包
-
RUN bash -c
'touch /my-docker.jar'
-
ENTRYPOINT [
"java",
"-jar",
"/my-docker.jar"]
-
# 暴露8888端口
-
EXPOSE 8888
把项目的jar包和Dockerfile文件上传到服务器,我这里放到了/mydocker路径下
使用命令构建镜像(注意最后的点,表示Dockerfile文件在当前目录下)
docker build -t my-docker:1.0 .
稍等一会儿之后,构建成功,查看镜像
这里代码访问的redis和mysql同样是docker中启动的
使用my-docker镜像启动一个容器
docker run -d -p 8888:8888 my-docker:1.0
不使用compose,需要单独启动三个容器,执行三遍docker run
使用 compose 部署项目
编写docker-compose.yml文件,并上传到服务器的/mydocker 路径下
-
version:
"3"
-
-
# 多个服务
-
services:
-
# my-docker服务
-
myDockerService:
-
# 镜像名称和版本
-
image: my-docker:1.0
-
# 启动的容器名称
-
container_name: my-docker
-
# 端口
-
ports:
-
- 8888:8888
-
# 容器数据卷
-
volumes:
-
- /app/myDocker:/data
-
# 网络模式 (最下方自定义的一个网络模式)
-
networks:
-
- my_net
-
# 依赖的服务(表示需要依赖的服务先启动)
-
depends_on:
-
- redis
-
- mysql
-
-
# redis 服务
-
redis:
-
image: redis
-
ports:
-
- 6666:6379
-
volumes:
-
- /app/redis/redis.conf:/etc/redis/redis.conf
-
- /app/redis/data:/data
-
networks:
-
- my_net
-
# 启动命令
-
command: redis-server /etc/redis/redis.conf
-
-
# mysql服务
-
mysql:
-
image: mysql:5.7
-
# mysql 相关配置
-
environment:
-
MYSQL_ROOT_PASSWORD:
'123456'
-
MYSQL_ALLOW_EMPTY_PASSWORD:
'no'
-
MYSQL_DATABASE:
'testdb'
-
MYSQL_USER:
'vhukze'
-
MYSQL_PASSWORD:
'vhukze'
-
ports:
-
- 3306:3306
-
volumes:
-
- /app/mysql/db:/var/lib/mysql
-
- /app/mysql/conf/my.cnf:/etc/my.cnf
-
- /app/mysql/init:/docker-entrypoint-initdb.d
-
networks:
-
- my_net
-
# 解决外部无法访问问题
-
command: --default-authentication-plugin=mysql_native_password
-
-
# 创建自定义网络模式
-
networks:
-
my_net:
使用同一个自定义网络模式,互相之间可以通过服务名称访问,修改项目配置文件,把redis和mysql的ip改为服务名称(注意这里redis的端口要改成容器内使用的端口,因为是容器之间互相访问,不会走宿主机的端口)
再次打包项目上传到服务器,使用Dockerfile构建镜像
在docker-compose.yml所在目录执行下面命令,检查语法是否有误
执行之后没有任何输出,表示语法没有问题
docker compose config -q
使用docker-compose启动三个容器
在docker-compose.yml所在目录执行下面命令
docker compose up -d
可以看到网络模式和三个容器都创建完成了
使用浏览器访问my-docker项目的接口,访问成功
一键停止并删除
docker compose down
一键停止
docker compose stop
一键启动
docker compose start
一键重启
docker compose restart
结论是 通过docker-compose可以一键创建和删除多个容器
转载:https://blog.csdn.net/qq_41890624/article/details/128389234