桃之夭夭,灼灼其华

Dockerfile方式springboot生成docker镜像

Word count: 368Reading time: 1 min
2020/07/26 Share
  • 在项目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
    1
    DockerRequestException: Request error: GET unix://localhost:80/version: 503
    原因:开启了VPN导致的问题
    处理方式:关掉VPN
CATALOG
  1. 1. dockerfile命令方式
  2. 2. maven方式
  3. 3. 遇到的问题