查看PostGIS Docker image,该说明指示通过以下docker run
命令使用:
docker run --name some-postgis -e POSTGRES_PASSWORD=mysecretpassword -d -P mdillon/postgis
具体来说,运行此命令时,我看到使用了-e
标志(即设置了环境变量POSTGRES_PASSWORD
。并且我可以测试除非指定,否则我无法登录到PostgreSQL服务器)该密码。
我正在尝试使用docker-compose
运行此Docker映像,但是我发现正确设置了环境变量 NOT :
version: '3.7'
volumes:
postgres:
services:
postgres:
image: mdillon/postgis
container_name: postgres
restart: always
environment:
- POSTGRES_PASSWORD=mysecretpassword
ports:
- 5432:5432
volumes:
- postgres:/var/lib/postgresql/data
然后我运行容器:docker-compose up -d --force-recreate --build
。我发现我可以没有访问PostGIS数据库的密码。这等效于运行不带-e
标志的Docker映像:docker run --name some-postgis -P -d mdillon/postgis
看着另一个StackOverflow问题:docker-compose environment not the same as Docker -e,然后查看了运行docker-compose
时正在创建的环境变量。正在运行:
docker-compose exec some-postgis sh
,然后
env
我得到以下信息:
...
POSTGRES_PASSWORD=mysecretpassword
...
因此正在设置POSTGRES_PASSWORD
。由docker run
创建的Docker容器与通过docker-compose
创建的容器对待环境变量的原因不同。