安装docker
- 环境 centos8.5
删除旧的docker 如果是新服务器可不执行
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装环境
yum -y install gcc
yum -y install gcc-c++
安装工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置镜像仓库(阿里的)
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新缓存
yum makecache
安装docker
sudo yum install docker-ce docker-ce-cli containerd.io
设置开机自启
systemctl enable docker
启动docker
systemctl start docker
到这里docker安装完成,无论如何安装成功就行,这里docker的镜像会比较慢所以可以设置docker的镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://0b27f0a81a00f3560fbdc00ddd2f99e0.mirror.swr.myhuaweicloud.com",
"https://ypzju6vq.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
容器之前通过网络访问 需要创建docker的网络协议
docker network create my-network
名字自定义,备用
安装mysql
- 拉去mysql的镜像
dockers pull mysql:latest
- 创建并启动mysql的容器
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=root -d \
-v /mydata/mysql:/var/lib/mysql \
--network=my-network \
-p 3306:3306 \
mysql:latest
启动的时候 使用–network=my-network 设置网络协议
到这里mysql就按照完成了
如果要启动jar 还需要按照maven,git和jdk 这里随便按照成功就行;
- 使用git拉去代码到服务器
- 使用maven编译代码 生成jar包
- 使用停止和删除之前旧的docker镜像和容器
- 使用dockerfile 构建新的镜像和容器
- 构建新的容器和镜像
这几步可以使用一个脚本完成
#!/bin/bash
# 1. 定义变量
REPO_URL="git clone 代码仓库url" # Git 仓库地址
BRANCH="master" # 要拉取的分支
PROJECT_DIR="项目目录" # 项目目录
IMAGE_NAME="镜像名称" # Docker 镜像名称
CONTAINER_NAME="Docker 容器名称" # Docker 容器名称
DOCKERFILE_PATH="./Dockerfile" # Dockerfile 路径
JAR_FILE="target/xxx.jar" # Maven 生成的 JAR 文件
# 2. 导航到项目目录
cd $PROJECT_DIR
# 3. 拉取最新代码
echo "正在从分支 $BRANCH 拉取最新代码..."
git checkout $BRANCH
git pull origin $BRANCH
# 4. 使用 Maven 编译项目并生成 JAR 包
echo "正在使用 Maven 构建项目..."
mvn clean package -DskipTests
# 检查 Maven 构建是否成功
if [ ! -f "$JAR_FILE" ]; then
echo "Maven 构建失败。未找到 JAR 文件!"
exit 1
fi
# 5. 停止旧的 Docker 容器
echo "正在停止旧的 Docker 容器..."
docker stop $CONTAINER_NAME
# 6. 删除旧的 Docker 容器
echo "正在删除旧的 Docker 容器..."
docker rm $CONTAINER_NAME
# 7. 删除旧的 Docker 镜像
echo "正在删除旧的 Docker 镜像..."
docker rmi $IMAGE_NAME
# 8. 构建新的 Docker 镜像
echo "正在构建新的 Docker 镜像..."
docker build -t $IMAGE_NAME -f $DOCKERFILE_PATH .
# 9. 运行新的 Docker 容器
echo "正在启动新的 Docker 容器..."
docker run -d --name $CONTAINER_NAME --network=my-network -p 8080:8080 $IMAGE_NAME
# 10. 检查新容器是否运行成功
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
echo "新的 Docker 容器 $CONTAINER_NAME 启动成功!"
else
echo "启动新的 Docker 容器失败。"
exit 1
fi
这里执行完就启动成功了,可以产看日志 -f 可以实现类似 tail -f 的效果
docker logs -f 容器ID