如何使应用程序属性从docker compose文件中的环境变量中拾取

如何使应用程序属性从docker compose文件中的环境变量中拾取,docker,spring-boot,docker-compose,Docker,Spring Boot,Docker Compose,我正在尝试使用我在docker compose文件中设置的环境变量创建docker映像。但它们并没有映射到应用程序属性。有人能解释一下我哪里出错了吗 Dockerfile FROM java:8-jre-alpine ARG TEST_DB_USERNAME ARG TEST_DB_PASSWORD ARG TEST_SERVER_PORT ARG TEST_DATASOURCE_DRIVER ARG TEST_DATASOURCE_URL ARG TEST_DATABASE_PLATFORM

我正在尝试使用我在docker compose文件中设置的环境变量创建docker映像。但它们并没有映射到应用程序属性。有人能解释一下我哪里出错了吗

Dockerfile

FROM java:8-jre-alpine
ARG TEST_DB_USERNAME
ARG TEST_DB_PASSWORD
ARG TEST_SERVER_PORT
ARG TEST_DATASOURCE_DRIVER
ARG TEST_DATASOURCE_URL
ARG TEST_DATABASE_PLATFORM
ARG TEST_PROFILE

ENV spring.datasource.url $TEST_DATASOURCE_URL
ENV spring.datasource.username $TEST_DB_USERNAME
ENV spring.datasource.password $TEST_DB_PASSWORD
ENV spring.datasource.driver-class-name $TEST_DATASOURCE_DRIVER
ENV spring.jpa.database-platform $TEST_DATABASE_PLATFORM
ENV spring.profiles.active $TEST_PROFILE
ENV server.port $TEST_SERVER_PORT

ADD target/facilities-management.jar facilities-management.jar
EXPOSE $TEST_SERVER_PORT
ENTRYPOINT  ["java", "-jar", "facilities-management.jar"]
docker compose.yml

version: '3'

    volumes:
      postgres_data: {}
      postgres_backup: {}
    services:
      postgres:
        build: ../postgres
        ports:
          - 5432:5432
        expose:
          - 5432 # expose the postgres port out so we can attached to the db from the real world. Only for development?
        volumes:
          - postgres_data:/var/lib/postgresql/data
          - postgres_backup:/backups
        restart: unless-stopped
        env_file:
          - .env
      test-server:
          build:
            context: ../../../test-management
          ports:
            - 8080:8080
          restart: unless-stopped
          depends_on:
            - postgres
.env

#TEST Environment Variables
TEST_DATASOURCE_URL=jdbc:postgresql://postgres:5432/postgres
TEST_SERVER_PORT=8081
TEST_DATASOURCE_DRIVER=org.postgresql.Driver
TEST_DB_USERNAME=postgres
TEST_DB_PASSWORD=123456
TEST_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQLDialect
TEST_PROFILE=sql_server
当我进行docker撰写时,出现以下错误

错误:

There is no active profile set

Cannot determine embedded database driver class for database type NONE.
Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]

尝试在env_file:directive之后添加此命令,如下所示

....
env_file:
      - .env
environment:
spring.datasource.url $TEST_DATASOURCE_URL
spring.datasource.username $TEST_DB_USERNAME
spring.datasource.password $TEST_DB_PASSWORD
......

因为环境变量在构建期间不会被持久化。

我仍然会得到相同的错误环境:-spring.datasource.url$FACILITY\u datasource\u url-spring.datasource.username$FACILITY\u DB\u username-spring.datasource.password$FACILITY\u DB\u password。我是否需要在application.properties文件中写入任何内容以进行映射?