【发布时间】:2020-06-27 18:22:14
【问题描述】:
我正在尝试在 docker 中运行 spring-boot 应用程序,但是当我尝试在 dockerfile 入口点中解析环境变量时,我收到以下错误:
无法打开 JDBC 连接以执行 DDL
我的 dockerfile 看起来像这样
FROM maven:3.6-jdk-8
COPY . /usr/src/api
WORKDIR /usr/src/api
ENV SPRING_URL ${SPRING_DATASOURCE_URL}
ENV SPRING_USERNAME ${SPRING_DATASOURCE_USERNAME}
ENV SPRING_PASSWORD ${SPRING_DATASOURCE_PASSWORD}
RUN mvn install:install-file \
-Dfile=.mvn/wrapper/maven-wrapper.jar \
-Dversion=1.0 \
-Dpackaging=jar \
-DgeneratePom=true \
-DSPRING_DATASOURCE_URL=SPRING_URL \
-DSPRING_DATASOURCE_USERNAME=SPRING_USERNAME \
-DSPRING_DATASOURCE_PASSWORD=SPRING_PASSWORD
ENTRYPOINT mvn -DSPRING_DATASOURCE_URL=SPRING_URL -DSPRING_DATASOURCE_USERNAME=SPRING_USERNAME -DSPRING_DATASOURCE_PASSWORD=SPRING_PASSWORD spring-boot:run
环境变量来自 docker-compose 文件。我在跑步
docker-compose build,构建成功(包括正在通过的测试)和docker-compose -p 0.0.0.0:8080:8080 run api,失败并出现上述错误。
我的 docker-compose.yml 看起来像这样:
version: '3'
services:
api:
image: test/api:1.0
build:
context: .
dockerfile: Dockerfile
environment:
- SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL}
- SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME}
- SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD}
问题在于我如何将环境变量解析到入口点。在 mvn 安装上,它似乎工作正常,但在 spring-boot:run 上却不行。入口点的shell形式是正确的命令吗?我应该如何解析变量?
【问题讨论】:
标签: spring-boot maven docker docker-compose