在项目pom.xml目录,编写
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20基础镜像
FROM openjdk:8-jdk-alpine
作者信息
MAINTAINER "liion"
添加一个存储空间
VOLUME /tmp
暴露端口
EXPOSE 8080
添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=target/test-docker.jar
往容器中添加jar包
ADD ${JAR_FILE} test-docker.jar
启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/test-docker.jar"]dockerfile命令方式
在dockerfile目录下
1
docker build -t test-docker .
查看镜像
1
docker images
生成容器运行
1
docker run -d --name test-docker -p 8080:8080 test-docker
maven方式
- pom.xml 添加配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<configuration>
<force>true</force>
<repository>${project.build.finalName}</repository>
<tag>${project.version}</tag>
<contextDirectory>${project.basedir}</contextDirectory>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin> - 构建项目
1
mvn clean package -Dmaven.test.skip=true -U
- 生成镜像
1
mvn dockerfile:build
- 查看镜像
1
docker images
- 生成容器运行
1
docker run -d --name test-docker -p 8080:8080 test-docker
- mvn dockerfile:build 会将老的镜像改为none,需要通过命令删除老的镜像
1
docker images | grep none | awk '{print $3}' | xargs docker rmi
遇到的问题
- 获取version 503原因:开启了VPN导致的问题
1
DockerRequestException: Request error: GET unix://localhost:80/version: 503
处理方式:关掉VPN