通用dockerfile 利用已经编译好的.jar 来构建镜像。要构建的目录如下:
[root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker build -t demo:1 .
运行镜像:
[root@iZuf61quxhnlk9m2tkx16cZ demo_jar]# docker run --rm --name demo -p 8154:8154 demo:1
服务已经启动了
dockerfile 文件如下:
FROM java:8-jre-alpine
MAINTAINER xx "xx@163.com"
EXPOSE 8154
VOLUME /tmp
COPY . .
ENTRYPOINT ["java","-jar","/demo.jar"]
查看容器内部:
这个操作就是把当前目录下的所有文件都添加到了容器中。并且只是放在了 / 目录下面。
优化2: dockerfile
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
运行:
docker run \
-p 8154:8154 \
--name demo \
--rm \
-e JAVA_OPTS='-server -Xmx512m -Xms512m' \
-d \
demo:1
优化3: dockerfile
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
运行:
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