dockerfile 構建 spring boot 鏡像

通用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
相關文章
相關標籤/搜索