通用dockerfile 利用已經編譯好的.jar 來構建鏡像。要構建的目錄以下:java
[root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 .
運行鏡像:spring
[root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker run --rm --name demo -p 8154:8154 demo:1
服務已經啓動了docker
dockerfile 文件以下:bash
FROM java:8-jre-alpine MAINTAINER xx "xx@163.com" EXPOSE 8154 VOLUME /tmp COPY . . ENTRYPOINT ["java","-jar","/demo.jar"]
查看容器內部:app
這個操做就是把當前目錄下的全部文件都添加到了容器中。而且只是放在了 / 目錄下面。優化
優化2: dockerfile ui
FROM java:8-jre-alpine MAINTAINER xxx"xxx@163.com" EXPOSE 8154 RUN mkdir -p /usr/local/demo_app VOLUME /tmp COPY . /usr/local/demo_app ENV JAVA_OPTS="" ENTRYPOINT java ${JAVA_OPTS} -jar /usr/local/demo_app/demo.jar
運行:spa
docker run \ -p 8154:8154 \ --name demo \ --rm \ -e JAVA_OPTS='-server -Xmx512m -Xms512m' \ -d \ demo:1
優化3: dockerfile code
FROM java:8-jre-alpine MAINTAINER xx"xxxx@163.com" EXPOSE 8154 RUN mkdir -p /usr/local/demo_app/config VOLUME /tmp COPY . /usr/local/demo_app ENV JAVA_OPTS="" WORKDIR /usr/local/demo_app ENTRYPOINT java ${JAVA_OPTS} -jar /usr/local/demo_app/demo.jar
運行:server
docker run \ -p 8154:8154 \ --name demo \ -e JAVA_OPTS='-server -Xmx512m -Xms512m' \ -v /usr/local/demo_app/logs:/usr/local/demo_app/logs \ -v /usr/local/demo_app/tmp:/tmp \ -v /usr/local/demo_app/config:/usr/local/demo_app/config \ -d \ demo:1
容器的工做目錄爲:
本機的目錄爲:
若是須要 application.yml 文件能夠放在 /usr/local/demo_app/config 中如:
注意 若是demo.jar 包裏也有這三個啓動文件。那麼spring boot 也有可能會讀取到。就是讀取完 file:config/applicaiton-test.yml 配置後,依然會去讀取classspath:applicaiton-test.yml (Spring Boot v2.1.4.RELEASE, Spring v5.1.6.RELEASE)
可是 (Spring Boot v2.1.3.RELEASE, Spring v5.1.5.RELEASE) 中file:config/applicaiton-test.yml 的配置信息是讀取不到的。最後仍是要落地於實踐
導出鏡像:
[root@iZuf61quxhnlk9m2tkx16cZ ~]# docker save -o /usr/local/demo.tar demo:1
導入鏡像:
[root@iZuf61quxhnlk9m2tkx16cZ ~]# docker load demo.tar