## 如果springboot配置jdbc时访问不了mysql;参考:docker学习(八) docker-compose 启动一个springboot 连接mysql_docker-compose springboot mysql jpa-CSDN博客
1. 使用阿里云容器镜像服务 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台
先[创建镜像仓库]:例如个人的公开仓库 registry.cn-shanghai.aliyuncs.com/starxin/docker-jib:1.0
2. 在idea中使用gradle构建工具,在配置文件build.gradle中添加jib插件等信息
plugins {
id 'java'
id 'idea'
id "io.spring.dependency-management" version "1.0.8.RELEASE"
id 'org.springframework.boot' version '2.7.5.RELEASE'
id "com.google.cloud.tools.jib" version "3.0.0"
}
.......其它配置......
jib {
from {
// image = 'registry.cn-shanghai.aliyuncs.com/starxin/docker-jib:1.0'
image = "eclipse-temurin:11-jre-focal"
platforms {
platform {
architecture = 'arm64' //部分国产操作系统用arm64
os = 'linux'
}
}
}
to {
image = 'registry.cn-shanghai.aliyuncs.com/MyRegistry/projectM'
tags = ["latest", "${project.version}".toString()]
allowInsecureRegistries = true
auth {
username = '登录账号'
password = '登录密码'
}
}
container {
creationTime='USE_CURRENT_TIMESTAMP'
jvmFlags = ['-Djava.security.egd=file:/dev/./urandom', '-Dspring.profiles.active=prod', '-Dfile.encoding=utf-8', '-Duser.timezone=GMT+08']
mainClass = 'com.xxx.RunApplication'
ports = ['8080']
}
}
注释:jvmFlags 配置中
'-Djava.security.egd=file:/dev/./urandom' - SecureRandom在java各种组件中使用广泛,可以加快随机数产生过程;建议添加
'-Dspring.profiles.active=prod' -执行springboot项目使用配置 application-prod.yml;可选
'-Dfile.encoding=utf-8' - 如果有下载文件代码,不加此句容易出现中文乱码;可选
'-Duser.timezone=GMT+08' - Java获取时间与系统时间相差8小时的解决方法;可选
注意:com.google.cloud.tools.jib version="2.0.0" 时....容器创建时间用:creationTime='USE_CURRENT_TIMESTAMP'
com.google.cloud.tools.jib version="1.x" 时....容器创建时间用:useCurrentTimestamp=true
具体版本对应参数参考 - https://github.com/GoogleContainerTools/jib/blob/master/jib-gradle-plugin/README.md
3. 配置完上面build.gradle,会在构建工具中出现jib插件,点击jib可以将本地jar打包成镜像文件上传到阿里云镜像仓库;
你可以在自己的服务器中搭建docker镜像仓库,然后上传到自己的docker镜像仓库中
4. 使用docker-compose运行容器,在 linux目录/root/home/docker下添加 docker-compose.yml ,内容如下:
version: '2'
services:
projectM:
image: registry.cn-shanghai.aliyuncs.com/MyRegistry/projectM
environment:
- TZ=Asia/Shanghai
ports:
- 8080:8080
restart: always
5.使用docker-compose命令运行容器;
cd /root/home/docker
docker images #查看容器列表
docker pull registry.cn-shanghai.aliyuncs.com/MyRegistry/projectM:[镜像版本号] #从阿里云拉取镜像到本地服务器
docker-compose stop projectM #停止运行的容器
docker-compose rm -f projectM #强制删除容器
docker-compose up -d projectM #后台方式运行容器
docker image rm $(docker image ls -a -q) #删除无效的容器
docker images #查看容器列表
docker-compose logs -f projectM #打印实时日志,可以在随时进入执行,查看运行的容器的日志信息