一、使用Docker的maven插件,构建springboot应用
官方文档:Getting Started | Spring Boot with Docker
(1)创建springboot工程,选择web
启动运行:
(2)步骤:maven里面添加配置pom.xml
<properties>
<docker.image.prefix>yuan</docker.image.prefix>
</properties>
<build>
<finalName>docker-demo</finalName>
<plugins>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<repository>${docker.image.prefix}/${project.artifactId}</repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
配置说明:
Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}
文档:Dockerfile 指令详解 - Docker —— 从入门到实践
打包SpringCloud镜像并上传私有仓库并部署
1.创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修则需要制定路径)
什么是Dockerfile : 由一系列命令和参数构成的脚本,这些命令应用于基础镜像, 最终创建一个新的镜像
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
参数讲解:
FROM <image>:<tag> 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令
VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
ARG 设置编译镜像时加入的参数, ENV 是设置容器的环境变量
COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点
ENTRYPOINT 容器启动时执行的命令
EXPOSE 8080 暴露镜像端口
2、构建镜像
mvn install dockerfile:build
https://cr.console.aliyun.com/repository/cn-hangzhou/hsx_hub/nginx-docker/details
- 登录阿里云容器镜像服务,输入密码(密码不显示!)
docker login --username=andy凌冰 registry.cn-hangzhou.aliyuncs.com
(2)打标签
docker tag a4dba3f91fba registry.cn-hangzhou.aliyuncs.com/hsx_hub/nginx-docker:docker-demo-v202109
(3)推送到镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/hsx_hub/nginx-docker:docker-demo-v202109
本地服务器使用1,2,3
(4)应用服务器拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/hsx_hub/nginx-docker:docker-demo-v202109
docker run -d --name my_docker_demo1 -p 8099:8080 a4dba3f91fba
应用服务器使用1,4
2.查看启动日志 docker logs -f containerid
docker logs -f 178b60772db34cf482ac0a5ac1e8e03ea6ffbb3618cf0ceb43f8ec17ae315e93
访问:http://IP远程:8089/user/find