Lun*_*ape 4 docker spring-boot docker-compose
docker-compose.yml:
services:
server:
image: server:latest
environment:
- SPRING_PROFILES_ACTIVE=dev
ports:
- 8080:8080
- 18080:18080
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
入口点.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" "$@"
Run Code Online (Sandbox Code Playgroud)
我有 3 个 application.yml: application.yml,application-dev.yml与application-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
Run Code Online (Sandbox Code Playgroud)
在您的容器运行后,这将附加到您的入口点,并且 spring boot 将选取此配置文件。它将像这样执行:
Java -jar yourJar.jar --spring.profiles.active = prod。
如果你想在你公司的各种环境中运行你的项目应用程序,并且对于不同的环境,你配置了不同的 kubernetes 集群,那么在不同的 kubernetes 环境中为你的应用程序配置不同的设置。意味着在 qa 环境中运行您的 docker 镜像时,qa Kubernetes 集群将通过 --spring.profiles.active = qa 以及类似的 staging 和 Prod 集群。
即使你想使用你正在使用的环境变量,然后使用
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" "$@"
Run Code Online (Sandbox Code Playgroud)
在 github 上检查:https : //github.com/vaneetkataria/MicroService_Architecture/blob/master/docker-compose.yml
| 归档时间: |
|
| 查看次数: |
10555 次 |
| 最近记录: |