docker 容器中 application.properties(或类似文件)的路径是什么?
What is the path for application.properties (or similar file) in docker container?
我正在 dockerizing springboot 应用程序(使用 PostgreSQL)。我想用我自己的 application.properties 覆盖 docker 容器中的 application.properties。
我的 docker-compose.yml 文件如下所示:
version: '2'
services:
API:
image: 'api-docker.jar'
ports:
- "8080:8080"
depends_on:
- PostgreSQL
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://PostgreSQL:5432/postgres
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=password
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
PostgreSQL:
image: postgres
volumes:
- C:/path/to/my/application.properties:/path/of/application.properties/in/container
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
我这样做是为了用我的 application.properties 文件覆盖容器中的 application.properties,以便数据存储在 localhost
我尝试了 /opt/application.properties 路径,但没有成功。
你有两个解决方案:
1) 第一个解
使用环境变量
创建application.properties
mycustomproperties1: ${MY_CUSTOM_ENV1}
mycustomproperties2: ${MY_CUSTOM_ENV2}
我建议您创建不同的 application.properties(application-test、application-prod 等...)
2) 另一种解决方案
创建docker文件:
FROM debian:buster
RUN apt-get update --fix-missing && apt-get dist-upgrade -y
RUN apt install wget -y
RUN apt install apt-transport-https ca-certificates wget dirmngr gnupg software-properties-common -y
RUN wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
RUN add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
RUN apt update
RUN apt install adoptopenjdk-8-hotspot -y
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","-Dspring.config.location="file:///config/application.properties","/app.jar"]
或者在docker compose
中添加环境变量
SPRING_CONFIG_LOCATION=file:///config/application.properties
修改docker-compose:
version: '2'
services:
API:
image: 'api-docker.jar'
ports:
- "8080:8080"
depends_on:
- PostgreSQL
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://PostgreSQL:5432/postgres
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=password
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
- SPRING_CONFIG_LOCATION=file:///config/application.properties
volumes:
- C:/path/to/my/application.properties:/config/application.properties
万一有人遇到同样的问题,这里是解决方案。
我正在尝试使用我的本地主机数据库而不是 in-memory 数据库(将其存储在容器中)。这是我的 docker-compose.yml 配置
version: '2'
services:
API:
image: 'api-docker.jar' #(your jar file name)
volumes:
- path/to/new/application.properties:/config/env
ports:
- "8080:8080"
您需要提供一个新的 application.properties 文件,其中包含用于将数据存储到本地数据库的配置(可以是您实际 application.properties 的副本)。该文件需要在容器的配置文件中覆盖,路径为/config/env(在yml文件中提到)
我正在 dockerizing springboot 应用程序(使用 PostgreSQL)。我想用我自己的 application.properties 覆盖 docker 容器中的 application.properties。 我的 docker-compose.yml 文件如下所示:
version: '2'
services:
API:
image: 'api-docker.jar'
ports:
- "8080:8080"
depends_on:
- PostgreSQL
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://PostgreSQL:5432/postgres
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=password
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
PostgreSQL:
image: postgres
volumes:
- C:/path/to/my/application.properties:/path/of/application.properties/in/container
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_USER=postgres
- POSTGRES_DB=postgres
我这样做是为了用我的 application.properties 文件覆盖容器中的 application.properties,以便数据存储在 localhost
我尝试了 /opt/application.properties 路径,但没有成功。
你有两个解决方案:
1) 第一个解
使用环境变量
创建application.propertiesmycustomproperties1: ${MY_CUSTOM_ENV1}
mycustomproperties2: ${MY_CUSTOM_ENV2}
我建议您创建不同的 application.properties(application-test、application-prod 等...)
2) 另一种解决方案
创建docker文件:
FROM debian:buster
RUN apt-get update --fix-missing && apt-get dist-upgrade -y
RUN apt install wget -y
RUN apt install apt-transport-https ca-certificates wget dirmngr gnupg software-properties-common -y
RUN wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -
RUN add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
RUN apt update
RUN apt install adoptopenjdk-8-hotspot -y
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","-Dspring.config.location="file:///config/application.properties","/app.jar"]
或者在docker compose
中添加环境变量SPRING_CONFIG_LOCATION=file:///config/application.properties
修改docker-compose:
version: '2'
services:
API:
image: 'api-docker.jar'
ports:
- "8080:8080"
depends_on:
- PostgreSQL
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://PostgreSQL:5432/postgres
- SPRING_DATASOURCE_USERNAME=postgres
- SPRING_DATASOURCE_PASSWORD=password
- SPRING_JPA_HIBERNATE_DDL_AUTO=update
- SPRING_CONFIG_LOCATION=file:///config/application.properties
volumes:
- C:/path/to/my/application.properties:/config/application.properties
万一有人遇到同样的问题,这里是解决方案。 我正在尝试使用我的本地主机数据库而不是 in-memory 数据库(将其存储在容器中)。这是我的 docker-compose.yml 配置
version: '2'
services:
API:
image: 'api-docker.jar' #(your jar file name)
volumes:
- path/to/new/application.properties:/config/env
ports:
- "8080:8080"
您需要提供一个新的 application.properties 文件,其中包含用于将数据存储到本地数据库的配置(可以是您实际 application.properties 的副本)。该文件需要在容器的配置文件中覆盖,路径为/config/env(在yml文件中提到)