gpt4 book ai didi

spring-boot - 基于 docker 环境变量切换 spring 配置文件不起作用

转载 作者:行者123 更新时间:2023-12-02 18:01:36 25 4
gpt4 key购买 nike

docker-compose.yml:

services:
server:
image: server:latest
environment:
- SPRING_PROFILES_ACTIVE=dev
ports:
- 8080:8080
- 18080:18080

Dockerfile:
FROM openjdk:8-jre-alpine

ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
SLEEP=0 \
JAVA_OPTS="" \

RUN adduser -D -s /bin/sh server
WORKDIR /home/server

ADD entrypoint.sh entrypoint.sh
RUN chmod 755 entrypoint.sh && chown server:server entrypoint.sh
USER server

ENTRYPOINT ["./entrypoint.sh"]
# expose server ports
EXPOSE 8080 18080

ADD *.jar server.jar

入口点.sh:
#!/bin/sh

echo "The application will start in ${SLEEP}s..." && sleep ${SLEEP}
exec java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar "${HOME}/server.jar" "$@"

我有 3 个 application.yml: application.yml , application-dev.ymlapplication-prod.yml与数据库地址不同。

但是当我运行 docker-compose up ,服务器总是使用默认设置,即使我在 docker-compose.yml 中提到事件配置文件是 dev。

我想知道如何在 docker-compose 文件中启用不同的配置文件。
谢谢。

编辑:
server.jar 文件是使用 assemble 构建的的 gradle。

最佳答案

添加命令:命名空间,如下所示:

services:
server:
image: server:latest
environment:
- SPRING_PROFILES_ACTIVE=dev
ports:
- 8080:8080
- 18080:18080
command: --spring.profiles.active=prod

在您的容器运行后,这将附加到您的入口点,并且 spring boot 将选取此配置文件。它将像这样执行:

Java -jar yourJar.jar --spring.profiles.active = prod。

如果你想在你公司的各种环境中运行你的项目应用程序,并且对于不同的环境,你配置了不同的 kubernetes 集群,那么在不同的 kubernetes 环境中为你的应用程序配置不同的设置。意味着在 qa 环境中运行您的 docker 镜像时 qa Kubernetes 集群将通过 --spring.profiles.active = qa
以及类似的登台和生产集群。

即使你想使用你正在使用的环境变量,然后使用
exec java ${JAVA_OPTS}
-Dspring.profiles.active={your envronment variable name describe in docker compose} -Djava.security.egd=file:/dev/./urandom -jar "${HOME}/server.jar" "$@"

在github上检查这个:
https://github.com/vaneetkataria/MicroService_Architecture/blob/master/docker-compose.yml

关于spring-boot - 基于 docker 环境变量切换 spring 配置文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54241346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com