管理员通过 Docker - 我可以指定 HTTP 端口吗?
Adminer via Docker - can I dictate HTTP port?
我对 Docker 和端口有点费劲,但这是我的情况。我有一个 Docker 组合文件,它启动了一个 Postgres 数据库和管理员,即管理 GUI。这是我的(截断的)配置:
# database
db:
image: postgres:14.2
volumes:
- .psqlrc:/root/.psqlrc:ro
- dbdat:/var/lib/postgresql/data
- ./log:/root/log:cached
- ./latest.dump:/latest.dump
environment:
POSTGRES_DB: hlp-api-dev
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
DB_PORT: 5432
ports:
- 5432
healthcheck:
test: pg_isready -U postgres -h 127.0.0.1
interval: 5s
# database admin
dbAdmin:
image: adminer
ports:
- 8080
depends_on:
- db
一切正常 - 但对管理员的 HTTP 访问似乎是 Docker 选择的随机端口,例如
http://localhost:57014
...我只能通过单击 Docker 桌面中其容器旁边的浏览器按钮才能找到它。 我如何指示这个端口,为什么它不能在
访问
http://localhost:8080
...列出的端口是什么?
如果我尝试指定另一个端口,即
ports:
- 8080
- 5000 # my choice
...然后它根本不会在任何端口上旋转。即使我在 DD 中单击浏览器按钮,我也会在浏览器中看到“连接重置”。
是的,你可以。如果您将两个端口号指定为 xxxx:yyyy
,第一个将是主机端口,第二个将是应用正在侦听的内部容器端口。管理员监听 8080,以便固定。但您可以自由选择主机端口。所以要在 http://localhost:5000/ 上访问它,你需要做
# database admin
dbAdmin:
image: adminer
ports:
- 5000:8080
depends_on:
- db
如果需要,您可以在 Postgres 容器上执行相同的操作。
我对 Docker 和端口有点费劲,但这是我的情况。我有一个 Docker 组合文件,它启动了一个 Postgres 数据库和管理员,即管理 GUI。这是我的(截断的)配置:
# database
db:
image: postgres:14.2
volumes:
- .psqlrc:/root/.psqlrc:ro
- dbdat:/var/lib/postgresql/data
- ./log:/root/log:cached
- ./latest.dump:/latest.dump
environment:
POSTGRES_DB: hlp-api-dev
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
DB_PORT: 5432
ports:
- 5432
healthcheck:
test: pg_isready -U postgres -h 127.0.0.1
interval: 5s
# database admin
dbAdmin:
image: adminer
ports:
- 8080
depends_on:
- db
一切正常 - 但对管理员的 HTTP 访问似乎是 Docker 选择的随机端口,例如
http://localhost:57014
...我只能通过单击 Docker 桌面中其容器旁边的浏览器按钮才能找到它。 我如何指示这个端口,为什么它不能在
访问http://localhost:8080
...列出的端口是什么?
如果我尝试指定另一个端口,即
ports:
- 8080
- 5000 # my choice
...然后它根本不会在任何端口上旋转。即使我在 DD 中单击浏览器按钮,我也会在浏览器中看到“连接重置”。
是的,你可以。如果您将两个端口号指定为 xxxx:yyyy
,第一个将是主机端口,第二个将是应用正在侦听的内部容器端口。管理员监听 8080,以便固定。但您可以自由选择主机端口。所以要在 http://localhost:5000/ 上访问它,你需要做
# database admin
dbAdmin:
image: adminer
ports:
- 5000:8080
depends_on:
- db
如果需要,您可以在 Postgres 容器上执行相同的操作。