java - 如何使用配置文件在 docker 中启动 Spring Boot 应用程序?
问题描述
我有一个简单的 spring-boot 项目:
-resources
-application.yaml
-application-test.yaml
我有这个Dockerfile
:
FROM openjdk:8-jdk-alpine
EXPOSE 8080
ADD micro-boot.jar micro-boot.jar
ENTRYPOINT ["java","-Dspring.profiles.active=test" "-jar","/micro-boot.jar"]
1)我建立形象 -C:\micro-boot>docker build -f Dockerfile -t micro-boot .
2)显示所有图像 -C:\micro-boot>docker image ls -a
micro-boot latest ccc9a75ebc24 4 seconds ago 112MB
3)尝试开始C:\micro-boot>docker image ls -a
我得到一个错误:
/bin/sh: [java,-Dspring.profiles.active=test: not found
解决方案
我们有3种方式:
1. 在 Dockerfile 中传递 Spring Profile
FROM openjdk:8-jre-alpine
...
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=test","-jar","app.jar"]
2.在Docker运行中传递Spring Profile
docker run -d -p 8080:8080 -e "SPRING_PROFILES_ACTIVE=test" --name my-app:latest
3. 在 DockerCompose 中传递 Spring Profile
version: "3.5"
services:
my-app:
image: my-app:latest
ports:
- "8080:8080"
environment:
- "SPRING_PROFILES_ACTIVE=test"
推荐阅读
- python-3.x - Jinja2 获取排序列表中的第一项
- bash - 调用在另一个 bash 文件中声明的方法
- wordpress - features_media graphql 查询在本地工作,但不在部署的 WP 后端
- python - pandas df中基于数组的新列
- r - 创建跨列的响应比例
- java - 使用 ExecutorService 但在提交的任务执行后停止
- java - Java:如何在直线平移图像时围绕自身旋转图像(保龄球动画)?
- syntax - YAMLSyntaxError:所有集合项必须从 X 行 X 列的同一列开始
- azure - 我们能否将不可变策略添加到具有卓越性能的 Azure 存储?
- python - iptables v 1.8.4v(旧版):未知选项--string