首页 > 技术文章 > 微服务上云Dockerfile编写,如何上云时将生产环境和开发环境分离并正确书写自定义启动命令

zhangpeiyao 2022-01-26 18:21 原文

点击查看代码
FROM openjdk:8-jdk
LABEL maintainer=leifengyang


#docker run -e PARAMS="--server.port 9090"
ENV PARAMS="--server.port=8080 --spring.profiles.active=prod --spring.cloud.nacos.discovery.server-addr=his-nacos.his:8848 --spring.cloud.nacos.config.server-addr=his-nacos.his:8848 --spring.cloud.nacos.config.namespace=prod --spring.cloud.nacos.config.file-extension=yml"
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

COPY target/*.jar /app.jar
EXPOSE 8080

#
ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]
1. --server.port=8080 指定该微服务暴漏的端口号
2. --spring.profiles.active=prod 会默认激活生产(prod)环境,也就会去指定的nacos种找对应的 应用名称-环境名称-配置文件格式(ruoyi-auth-dev.yml)

image

可以在nacos当中再建立prod名称空间用以区分开发和生产环境的配置。将dev开发环境的配置文件克隆一份给prod生产环境(修改配置文件中的个别例如生产环境的mysql地址,生产环境的redis地址等配置)然后在服务上云打包的时候可以通过自定义的启动命令来激活生产环境,让服务自动从nacos当中读取生产环境的配置文件

image

3. --spring.cloud.nacos.discovery.server-addr=his-nacos.his:8848 指定生产环境的nacos地址
4. --spring.cloud.nacos.config.namespace=prod4.--spring.cloud.nacos.config.namespace=prod 指定nacos中生产环境配置文件的名称空间
5. --spring.cloud.nacos.config.file-extension=yml nacos中配置的后缀名称为yml

推荐阅读