docker-compose.yml
文件:version: '3.8'
services:
db:
image: postgres:12-alpine
environment:
- POSTGRES_USER=tester
- POSTGRES_PASSWORD=atest
- POSTGRES_DB=test_db
ports:
- 5432:5432
expose:
- 5432
正在进行:
> docker-compose up -d
...
> psql test_db -U tester -h localhost
Password for user tester:
psql (12.3)
Type "help" for help.
test_db=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+--------+----------+------------+------------+-------------------
postgres | tester | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | tester | UTF8 | en_US.utf8 | en_US.utf8 | =c/tester +
| | | | | tester=CTc/tester
template1 | tester | UTF8 | en_US.utf8 | en_US.utf8 | =c/tester +
| | | | | tester=CTc/tester
test_db | tester | UTF8 | en_US.utf8 | en_US.utf8 |
(4 rows)
\q
> docker-compose exec db ps awx
PID USER TIME COMMAND
1 postgres 0:00 postgres
46 postgres 0:00 postgres: checkpointer
47 postgres 0:00 postgres: background writer
48 postgres 0:00 postgres: walwriter
49 postgres 0:00 postgres: autovacuum launcher
50 postgres 0:00 postgres: stats collector
51 postgres 0:00 postgres: logical replication launcher
52 root 0:00 ps awx
正常运行。执行以下代码也是一样的:
docker-compose exec db psql test_db -U tester
这也是非常好的。
然而,按照以下方式操作:
> docker-compose down
> docker-compose run db psql test_db -U tester
psql: error: could not connect to server: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
failed to resize tty, using default size
> docker-compose run db /bin/sh
/ # ps awx
PID USER TIME COMMAND
1 root 0:00 /bin/sh
7 root 0:00 ps awx
我可以看到使用docker-compose run db
命令时,postgres服务
没有被启动。为什么?
翻译内容:
什么?
--entrypoint CMD Override the entrypoint of the image.
docker-compose run --help
中的run
指什么?如果有需要覆盖的内容,那么入口点应该被执行,而不是应该被执行吗?
更新:
我查看了https://docs.docker.com/compose/reference/run/,考虑是否--service-ports
会有所帮助,但它没有(不出所料,因为如上所述,postgres
服务未启动,所以我不认为这可能是端口问题),并找到了一个示例:
docker-compose run db psql -h db -U docker
但唉!这正是我一直在尝试却无济于事的!