我是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
。
我做错了什么?
答案 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