通用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