Docker打包并部署项目

肖卓2024年9月18日
大约 3 分钟

该文档的需求是已经在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/131413312open in new window

在Linux上安装docker参考博客

参考博客:https://www.jianshu.com/p/c9a05d3f6448open in new window

在新的环境上传镜像文件,在执行命令时,可以在文件夹地址栏输入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.gzopen in new window

--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.
上次编辑于: 2024/9/18 16:07:54
贡献者: 肖卓
评论
Powered by Waline v2.5.1