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

li-*_*raz 1 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"
Run Code Online (Sandbox Code Playgroud)

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

ENV MYSQL_HOST=localhost
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?

aer*_*ite 5

问题在于您如何运行 docker 映像。

$ docker run --help

Usage:  docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run Code Online (Sandbox Code Playgroud)

所以,你-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
Run Code Online (Sandbox Code Playgroud)