dockers实践(使用docker搭建一个javaweb程序)

安装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

  1. 拉去mysql的镜像
dockers pull mysql:latest
  1. 创建并启动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 这里随便按照成功就行;

  1. 使用git拉去代码到服务器
  2. 使用maven编译代码 生成jar包
  3. 使用停止和删除之前旧的docker镜像和容器
  4. 使用dockerfile 构建新的镜像和容器
  5. 构建新的容器和镜像
    这几步可以使用一个脚本完成
#!/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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值