Docker打包并部署项目
该文档的需求是已经在DockerDesktop中已经将docker镜像运行起来了,但是需要将该镜像部署到其他的环境中运行,所以文档主要步骤为打包镜像,上传镜像,启动镜像这几步
一、打包镜像
在DockerDesktop中确保镜像能正常在容器中启动查看docker镜像
docker images
保存docker镜像
docker save -o d:/mysql.tar jeecg-boot-mysql
docker save -o d:/redis.tar redis
docker save -o d:/system.tar jeecg-boot-system
二、上传镜像
在新环境中必须安装docker环境,如果是Windows电脑必须开启WLS2,开启方法参考如下博客参考博客:https://blog.csdn.net/GoodburghCottage/article/details/131413312
在Linux上安装docker参考博客
参考博客:https://www.jianshu.com/p/c9a05d3f6448
在新的环境上传镜像文件,在执行命令时,可以在文件夹地址栏输入cmd回车,打开命令窗口,命令如下
docker load -i ./mysql.tar
docker load -i ./redis.tar
docker load -i ./system.tar
三、启动镜像
如果镜像相互引用,则需要考虑在容器中的网络问题,需要创建一个虚拟网络,容器中的应用都加入到虚拟网络中来#通过docker命令创建网络
docker network create jeecg-boot-demand_default
#启动后再连接网络
docker network connect jeecg-boot-demand_default jeecg-boot-mysql
docker network connect jeecg-boot-demand_default jeecg-boot-redis
docker network connect jeecg-boot-demand_default jeecg-boot-system
启动镜像
docker create --name jeecg-boot-system
--network jeecg-boot-demand_default
--label='com.docker.compose.project=jeecg-boot-demand'
-p 8080:8080 jeecg-boot-system
docker start jeecg-boot-system
或
docker run
--name jeecg-boot-redis
--hostname=127.0.0.1
--env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
--env=GOSU_VERSION=1.14 --env=REDIS_VERSION=5.0.14
--env=REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-5.0.14.tar.gz
--volume=/data
--network=jeecg-boot-demand_default
--workdir=/data
-p 6379:6379
--restart=always
--label='com.docker.compose.container-number=1'
--label com.docker.compose.project=jeecg-boot-demand
--runtime=runc -d redis:5.0
四、编写脚本
在window电脑上可以编写成脚本的方式上传并启动镜像,分别编写三个脚本1.上传并启动脚本,起名docker_load.bat
@echo off
docker load -i ./mysql.tar
docker load -i ./redis.tar
docker load -i ./system.tar
REM Create network
docker network create jeecg-boot-demand_default
REM Create volumes
docker volume create jeecg-boot-mysql-volume
docker volume create jeecg-boot-redis-volume
REM Create and start MySQL container
docker run --name jeecg-boot-mysql --hostname=127.0.0.1 --env=MYSQL_PASSWORD=jyydemand123 --env=MYSQL_ROOT_PASSWORD=root --env=MYSQL_DATABASE=jyy-demand --env=MYSQL_USER=jyy-demand --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=GOSU_VERSION=1.12 --env=MYSQL_MAJOR=8.0 --env=MYSQL_VERSION=8.0.19-1debian10 --env=TZ=Asia/Shanghai --volume=/var/lib/mysql --network=jeecg-boot-demand_default -p 3306:3306 --restart=always --label='com.docker.compose.config-hash=7330aa2ea8856385a5e1acaed3d7f033321f2c8ac9fd4cf409c556ca3b020cd5' --label='com.docker.compose.container-number=1' --label='com.docker.compose.depends_on=' --label='com.docker.compose.image=sha256:a900ffe8bac658f15c4fb0a104f1408afac77e2a75ee2e10c768baa05124354d' --label='com.docker.compose.oneoff=False' --label='com.docker.compose.project=jeecg-boot-demand' --label='com.docker.compose.service=jeecg-boot-mysql' --label='com.docker.compose.version=2.27.0' --runtime=runc -d jeecg-boot-mysql --lower_case_table_names=1
REM Create and start Redis container
docker run --name jeecg-boot-redis --hostname=127.0.0.1 --env=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env=GOSU_VERSION=1.14 --env=REDIS_VERSION=5.0.14 --env=REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-5.0.14.tar.gz --env=REDIS_DOWNLOAD_SHA=3ea5024766d983249e80d4aa9457c897a9f079957d0fb1f35682df233f997f32 --volume=/data --network=jeecg-boot-demand_default --workdir=/data -p 6379:6379 --restart=always --label='com.docker.compose.config-hash=740f57d5f9593e5e31e0ef86ce772289a322e39b01d74663b729d5e1e019e6c9' --label='com.docker.compose.container-number=1' --label='com.docker.compose.depends_on=' --label='com.docker.compose.image=sha256:99ee9af2b6b19af32115d853877d1ef1aac2768005dcbfeea7cbdeea30c1d79c' --label='com.docker.compose.oneoff=False' --label com.docker.compose.project=jeecg-boot-demand --runtime=runc -d redis:5.0
REM Create and start Jeecg Boot System container
docker create --name jeecg-boot-system --network jeecg-boot-demand_default ^
--label='com.docker.compose.project=jeecg-boot-demand' ^
-p 8080:8080 jeecg-boot-system
docker start jeecg-boot-system
REM Connect containers to network (if not already connected)
docker network connect jeecg-boot-demand_default jeecg-boot-mysql
docker network connect jeecg-boot-demand_default jeecg-boot-redis
docker network connect jeecg-boot-demand_default jeecg-boot-system
echo All containers have been set up and started successfully.
2.单独启动脚本,起名docker_start.bat
@echo off
docker start jeecg-boot-mysql
docker start jeecg-boot-redis
docker start jeecg-boot-system
echo All containers have been set up and started successfully.
3.单独停止脚本,起名docker_stop.bat
@echo off
echo Stopping containers...
REM Stop the containers
docker stop jeecg-boot-system
docker stop jeecg-boot-mysql
docker stop jeecg-boot-redis
echo All containers stoped successfully.
4.卸载容器脚本,起名docker_uninstall.bat,该脚本慎用,可不创建
@echo off
echo Stopping and removing containers...
REM Stop the containers
docker stop jeecg-boot-system
docker stop jeecg-boot-mysql
docker stop jeecg-boot-redis
REM Remove the containers
docker rm jeecg-boot-system
docker rm jeecg-boot-mysql
docker rm jeecg-boot-redis
echo Removing volumes...
REM Remove the volumes
docker volume rm jeecg-boot-mysql-volume
docker volume rm jeecg-boot-redis-volume
echo Removing network...
REM Remove the network
docker network rm jeecg-boot-demand_default
echo All containers, volumes, and network have been removed successfully.