环境
- windows 10
- docker-toolbox
- virtualbox
- 阿里云容器镜像服务
步骤
1. 编辑POM文件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.4</version>
<executions>
<execution>
<id>tag-latest</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
<goal>push</goal>
</goals>
<configuration>
<tag>latest</tag>
</configuration>
</execution>
<execution>
<id>tag-version</id>
<phase>deploy</phase>
<goals>
<goal>build</goal>
<goal>tag</goal>
<goal>push</goal>
</goals>
<configuration>
<tag>${project.version}</tag>
</configuration>
</execution>
</executions>
<configuration>
<!--子用户名@企业别名 或 子用户名@主账号UID-->
<username>镜像仓库用户名</username>
<!--在容器镜像服务控制台"设置Registry登陆密码"-->
<password>镜像仓库密码</password>
<!--registry.cn-hangzhou.aliyuncs.com/namespace/repositoryname-->
<repository>镜像仓库地址</repository>
<tag>latest</tag>
<buildArgs>
<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
2. 编辑Dockerfile
FROM java:8-jdk-alpine
ARG JAR_FILE
ADD target/${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["/usr/bin/java", "-jar", "/app.jar"]
3. 执行构建命令
先查看docker环境变量
$ docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="C:\Users\shiji\.docker\machine\machines\default"
export DOCKER_MACHINE_NAME="default"
export COMPOSE_CONVERT_WINDOWS_PATHS="true"
再通过命令行构建
# 不设置环境变量会报错:
# Connect to localhost:2375 failed: Connection refused
set DOCKER_HOST=https://192.168.99.100:2376
set DOCKER_CERT_PATH=C:\Users\shiji\.docker\machine\machines\default
# 生成jar包
mvn package -Dmaven.test.skip=true
# build image
mvn dockerfile:build
# push image
mvn dockerfile:push@tag-version
mvn dockerfile:push@tag-latest
参考资料
- 插件相关
dockerfile-maven homepage
How to define a custom docker host url?
push multiple tags - 阿里云镜像服务与RAM子账号
镜像基本操作
仓库访问控制