1、先找一个springcloud 项目,打成jar包,命名:test.jar
2、编写Dockerfile:
#java8镜像,如果大家的docker镜像中没有java8,它就会自动去下载
FROM java:8
# 将本地文件夹挂载到当前容器,指定/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使用/tmp作为工作目录
VOLUME /apps/srv/test-cloud/test-data-server/logs /apps/srv/test-cloud/test-data-server/logs
RUN bash -c 'mkdir -p /apps/srv/test-cloud/test-data-server/logs/'
# 添加自己的项目到 app.jar中 这里我是取了app.jar的名字,这个名字可以随便取的,只要后面几行名字和这个统一就好了
ADD test-data-server-1.0.0-SNAPSHOT.jar /apps/srv/test-cloud/test-data-server/test-data-server-1.0.0-SNAPSHOT.jar
# 开放6000端口
EXPOSE 6000
CMD /bin/bash -c 'java -Dspring.profiles.active=test -jar /apps/srv/test-cloud/test-data-server/test-data-server-1.0.0-SNAPSHOT.jar'
# ENTRYPOINT指定容器运行后默认执行的命令
#ENTRYPOINT ["sh","-c","java $JAVA_OPTS -jar /apps/srv/test-cloud/test-data-server/test-data-server-1.0.0-SNAPSHOT.jar $0 $@"]3、为方便测试,创建一个目录把这test.jar 和 Dockerfile 放到同一个目录
4、在当前目录执行【docker build -t test:1.0 . 】
5、成功后,docker images 查看4步创建的镜像。
6、根据dockfile的配置选择对应的容器启动命令:docker run -it -p 6002:6000 -d e24b385109c7
或者
docker run -it -e JAVA_OPTS="-Dspring.profiles.active=test" -p 6002:6000 -d e24b385109c7
【坑点】:
1、容器启动后默认使用的是私域ip,所以注册到nacos后,其实请求是访问不到服务的。
如果是nacos需要新增两个配置:
spring:
cloud:
nacos:
discovery:
server-addr:
group: my-cloud-${spring.profiles.active}
# 增加下面两个配置
ip: 172.16.22.93(公网ip)
port: 6002(容器映射的端口一致)2、因为找的jar包下日志是接了log4j2,所以日志的输出是基于log4j2的配置,初期主要是找不到日志到底输出到哪里了,把日志配置的相对路径改为了绝对路径,一切就都正常了。
留了一个疑问就是相对路径如何配置?

版权声明:本文为oldThreeJJJ原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。