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


#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 指定该微服务pod容器暴漏的端口号
2. --spring.profiles.active=prod 会覆盖微服务bootstrap.yml配置文件的spring.profiles.active的值,也就是将dev环境激活成生产(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 覆盖Bootstrap.yml配置文件中对应字段的值,指定线上生产环境的nacos地址(这里nacos地址用的集群内部的地址his-nacos.his:8848,集群内部可访问)
4. --spring.cloud.nacos.config.namespace=prod 覆盖Bootstrap.yml配置文件中对应字段的值,指定线上nacos中生产环境配置文件的名称空间
5. --spring.cloud.nacos.config.file-extension=yml 覆盖Bootstrap.yml配置文件中对应字段的值,指定线上nacos中配置的后缀名称为yml