在docker容器内运行的java无法看到环境变量

时间:2018-02-12 15:33:56

标签: docker dockerfile

我是Docker的新手。我有一个小型Java应用程序,我试图在Docker中运行。我创建了一个 Dockerfile 来构建图像。

我的应用程序正在阅读环境变量以了解要连接的数据库。

运行命令时

docker run -d -p 80:80 occm -e "MYSQL_USER=user" -e "MYSQL_PASSWORD=password" -e "MYSQL_PORT=3306" -e "MYSQL_HOST=somehost"

然后使用System.getenv枚举所有变量,我没有看到任何变量。所以我已添加到Docker文件

ENV MYSQL_HOST=localhost

现在当我运行容器时,我看到了这个变量,但是我看到的是localhost值,而不是somehost

我做错了什么?

1 个答案:

答案 0 :(得分:4)

问题是你如何运行docker镜像。

$ docker run --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

因此,您将-e "..." -e "..."作为命令和参数传递

您需要使用-e作为[OPTIONS]。

$ docker run -d -p 80:80 -e "MYSQL_USER=user" -e "MYSQL_PASSWORD=password" -e "MYSQL_PORT=3306" -e "MYSQL_HOST=somehost" occm