1、添加maven配置java
<properties> <docker.image.prefix>ms4t</docker.image.prefix> </properties> <build> <finalName>eureka</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <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>
2、建立Dockerfilespring
FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"]
參數講解:docker
FROM <image>:<tag> 須要一個基礎鏡像,能夠是公共的或者私有的。app
後續構建會基於此鏡像,若是同一個Dockerfile中創建多個鏡像時,能夠使用多個FROM指令maven
VOLUME 配置一個具備持久化功能的目錄,主機 /var/lib/docker 目錄下建立了一個臨時文件,並連接到容器的/tmp。改步驟是可選的,若是涉及到文件系統的應用就頗有必要了spring-boot
。/tmp目錄用來持久化到 Docker 數據文件夾,由於Spring Boot 使用的內嵌 Tomcat 容器默認使用 /tmp 做爲工做目錄ui
ARG 設置編譯鏡像時加入的參數, ENV 是設置容器的環境變量spa
COPY:只支持將本地文件複製到容器,還有個ADD更強大但複雜點code
ENTRYPOINT 容器啓動時執行的命令blog
EXPOSE 8080 暴露的鏡像端口
3、構建
mvn install dockerfile:build
4、啓動
docker run -d --name 名稱 -p 對外端口:容器端口 鏡像ID