Docker部署Java项目相比传统部署方式,在环境一致性、配置管理、可扩展性和安全性等方面具有显著优势。然而,它也带来了学习成本、资源消耗和复杂度增加等挑战。
云服务器
白嫖阿里云服务
通过免费试用方式获取自己的阿里云服务器。当然,如果你条件允许,也可以直接选择购买一个服务器。
入口:
个人免费试用:
云服务设置
操作系统:Alibaba Cloud Linux 3.2104 LTS 64位
设置密码:首先,需要通过具连接到服务器,连接方式包括密码连接,密钥等方式。密码方式比较简单。
公网IP:对外IP地址
连接服务器
连接工具:因为xshell付费产品,选择开源的Tabby作为连接工具
新建配置,选择SSH连接,配置云服务公网ip,用户名及密码。
安装docker环境
下载安装:
配置阿里云镜像资源,加速下载,安装docker
# 配置阿里云镜像资源,加速下载
yum-config-manager --add-rep https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce
执行命令后:
安装完成:
启动docker
启动docekr,通过查看docker版本
service docker start#查看版本
docker --version
设置开机自启
systemctl enable docker.service
镜像加速配置
国内从DockerHub拉取镜像有时会遇到困难,此时可以配置镜像加速器。
Docker官方和国内很多云服务商都提供了国内加速器服务,建议根据运行docker的云平台选择对应的镜像加速服务。
下面列出国内常用的加速站点,排名不分先后,总体来说阿里云速度较稳定。
docker中国区官方镜像加速:https://registry.docker-cn.com
网易镜像加速:http://hub-mirror.c.163.com
中国科技大学镜像加速:https://docker.mirrors.ustc.edu.cn
腾讯云镜像加速:https://mirror.ccs.tencentyun.com
阿里云镜像加速:https://ung2thfc.mirror.aliyuncs.com
修改daemon配置文件/etc/docker/daemon.json来使用加速器
vi /etc/docker/daemon.json{
"registry-mirrors": ["https://ung2thfc.mirror.aliyuncs.com","https://mirror.ccs.tencentyun.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],"live-restore": true
}
加载重启docker
systemctl daemon-reloadsystemctl restart docker
检查是否生效
docker info
安装docker compose
curl -L https://github.com/docker/compose/releases/download/1.28.6/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
将可执行权限应用域二进制文件
#给他一个执行权限
chmod +x /usr/local/bin/docker-compose
查看安装版本
#查看是否安装成功
docker-compose -version
java项目打包
源码
SpringBoot项目docker-demo-service源码:
https://gitee.com/xmhzzz/micro-practice/tree/master/docker-demo-service
项目环境:jdk17 SpringBoot3.0.2
maven打包
项目maven打包配置spring-boot-maven-plugin:
<build><finalName>docker-demo-service</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>com.gitee.xmhzzz.docker.demo.service.DockerDemoServiceApplication</mainClass><layout>JAR</layout></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
idea工具maven打包:
docker-demo-service.jar
Dockerfile
编写Dockerfile文件
FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:17-anolisWORKDIR /demo-serviceARG JAR_FILE=target/docker-demo-service.jarCOPY ${JAR_FILE} app.jarEXPOSE 8003ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Dspring.profiles.active=test"CMD sleep 60; java $JAVA_OPTS -jar app.jar
构建images
上传jar包和Dockerfile
在root下新建文件夹target
mkdir target
使用Tabby的SFTP上传jar包到target目录
在root下上传Dockerfile文件
创建镜像
利用Dockerfile文件创建镜像 docker build -t demo . (别漏了有个“.”) demo 为自己设置的镜像名字,自定义选择
docker build -t demo .
查看镜像
docker images
运行项目
运行镜像
docker run -d -p 8003:8003 --name demo demo:latest
查看运行的实例
docker ps -a
查看Docker运行日志
docker logs -f demo
入容器的命令行界面
docker exec -it demo /bin/bash
查看SpringBoot项目日志
退回上一级
cd ..
查看日志
tail -100f data/logs/docker-demo-service/info/info.log
退出容器的命令行界面
exit