我正在尝试使用我在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]
答案 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
......
因为环境变量在构建期间不会持久存在。