1. 待部署的服务器(生产环境)上配置好远程访问
2. maven构建所在的服务器上(或者jenkins容器里),配置好一个host
3. pom.xml Maven插件相关配置
<properties>
<docker.image.prefix>registry.cn-beijing.aliyuncs.com</docker.image.prefix>
<docker.image.midfix>wheatdr-cloud</docker.image.midfix>
<username>my-username</username>
<password>my-password</password>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 使用Maven插件直接将应用打包为一个Docker镜像 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.3.6</version>
<configuration>
<useMavenSettingsForAuth>true</useMavenSettingsForAuth>
<repository>${docker.image.prefix}/${docker.image.midfix}/${project.artifactId}</repository>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
<!-- 镜像构建完毕之后自动推送到仓库 -->
<executions>
<execution>
<id>default</id>
<phase>install</phase>
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
4. 模块根路径下Dockerfile文件
FROM java:8
ARG JAR_FILE
ADD target/${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
5. 弄完之前的几步,服务器上镜像准备好了
6. 但是总不能一个个启动吧,所以需要docker-compose编排容器。
原理
几个坑
- 找不到文件Jar file或者其他file,“文件路径要相对于Dockerfile写”
- denied: requested access to the resource is denied。这个是上传的时候会出错的,主要是tag不对应。
必须按照这样的格式命名镜像才能上传