Dockerizing Spring Boot Application

时间:2018-04-09 01:58:10

标签: docker spring-boot

我有一个带有以下Dockerfile的Spring启动应用程序。

FROM docker.com/base/jdk1.8:latest

MAINTAINER Application Engineering [ https://docker.com/ ]

RUN mkdir -p /opt/docker/svc

COPY application/weather-service.war /opt/docker/svc/

CMD java -jar /opt/docker/svc/weather-service.war --spring.config.location=file:/conf/application.properties -Dlogging.config=/conf/logback.xml

我的应用程序需要20个不同的属性。我在application.properties中有10个属性,并希望通过env变量传递其余的属性。 application.properties文件中的10个属性工作正常,但是env变量未按预期工作。

另外,是否可以像-Dtest.name = test一样使用“-D”来传递它们?

我们可以混合使用吗?

由于

2 个答案:

答案 0 :(得分:0)

使用docker-compose添加你的env var for runtime

 api:
    image: api
    build:
      context: .
      dockerfile: Dockerfile
    environment:
       - TEST=test
    ports:
      - 5000:5000
    volumes:
      - .:/app
    working_dir: /app
    entrypoint: /bin/bash -c "java -jar /opt/docker/svc/weather-service.war --spring.config.location=file:/conf/application.properties -Dlogging.config=/conf/logback.xml"

答案 1 :(得分:0)

更简单的方法是使用环境文件。 java属性文件通常采用类似的格式。如果没有,您必须进行一些调整以避免重复。

private void ResetDataPatient() {
    imgBox.Image.Dispose();
    imgBox.Image = Properties.Resources.defaultpicture;
    if (xrayPic != null)
        xrayPic.Dispose();
    xrayPic = null;
    if (rootPic != null)
        rootPic.Dispose();
    rootPic = null;
    if (tmppic != null)
        tmppic.Dispose();
    tmppic = null;
    if (tmppicCheck != null)
        tmppicCheck.Dispose();
    tmppicCheck = null;
    if (originalPic != null)
        originalPic.Dispose();
    originalPic = null;
    if (PatienData != null) {
        PatienData.Clear();
        PatienData.Dispose();
        PatienData = null;
    }
}

https://docs.docker.com/compose/compose-file/#env_file