如何从docker-compose文件

时间:2018-02-22 12:23:16

标签: docker spring-boot docker-compose

我正在尝试使用我在docker-compose文件中设置的env变量创建一个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"]

搬运工-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-compose up时,我收到以下错误

错误:

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]

1 个答案:

答案 0 :(得分:1)

尝试在env_file:指令之后添加此内容,如下面的

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

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