我是Docker的新手,目前还不清楚如何从容器访问外部数据库.是连接字符串中硬编码的最佳方法吗?
# Dockerfile
ENV DATABASE_URL amazon:rds/connection?string
Run Code Online (Sandbox Code Playgroud) 我有一个Spring Boot应用程序实现了一个我想在Docker容器中运行的服务.我遵循官方Spring文档的指导原则,建议创建类似于此的DockerFile:
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
Run Code Online (Sandbox Code Playgroud)
然后一旦图像被推送到Docker我使用Docker Compose以这种方式启动它:
spring-boot-docker:
ports:
- "80:80"
expose:
- "80"
image: my-repo/spring-boot-docker:0.1.0-SNAPSHOT
container_name: spring-boot-docker
environment:
JAVA_OPTS: '-Xmx64m'
Run Code Online (Sandbox Code Playgroud)
这里我得到了JAVA_OPTS限制内存分配的变量,但是,当我执行时docker stats spring-boot-docker,容器占用的内存过多(我知道JVM占用的总内存可能远远超过64M,但在这种情况下完全是无边).
我也尝试过这个mem_limit参数,但这显然会减慢应用程序的速度.
我有一个 Spring Boot 应用程序,我打算将其部署为 docker 容器。
我正在使用 DOCKERFILE 使用入口点构建图像: ENTRYPOINT ["java", "-jar", "myFolder/app.jar"]
图像在 JENKINSFILE 中构建,如下所示:
docker build . -t repo/app:latest
我正在使用脚本来运行 docker 映像。我想根据该脚本的参数设置自定义属性的值。
所以说我有一个自定义属性:custom.property.isTest=false. 它控制 bean 应该返回哪个类,例如
@Value("${custom.property.isTest:false}")
boolean isTest;
@Bean
public MyService myServiceImpl(){
if(isTest) {
return new myServiceTestImpl();
} else {
return new myServiceImpl();
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在运行 docker 映像时设置此值。例如使用参数:-e做这样的事情(不起作用)'custom.property.isTest=true'。那可能吗?
谢谢