我有我的docker-compose.yml的以下代码:
version: '3'
services:
db:
image: postgres:14.6
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- ./data:/var/lib/postgresql/data
但是当我执行docker compose up
时,控制台给予了下一个错误:
servicios-basesdatos-db-1 exited with code 1
servicios-basesdatos-db-1 | The files belonging to this database system will be owned by user "postgres".
servicios-basesdatos-db-1 | This user must also own the server process.
servicios-basesdatos-db-1 |
servicios-basesdatos-db-1 | The database cluster will be initialized with locale "en_US.utf8".
servicios-basesdatos-db-1 | The default database encoding has accordingly been set to "UTF8".
servicios-basesdatos-db-1 | The default text search configuration will be set to "english".
servicios-basesdatos-db-1 |
servicios-basesdatos-db-1 | Data page checksums are disabled.
servicios-basesdatos-db-1 |
servicios-basesdatos-db-1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok
servicios-basesdatos-db-1 | creating subdirectories ... ok
servicios-basesdatos-db-1 | selecting dynamic shared memory implementation ... posix
servicios-basesdatos-db-1 | selecting default max_connections ... 20
servicios-basesdatos-db-1 | selecting default shared_buffers ... 400kB
servicios-basesdatos-db-1 | selecting default time zone ... Etc/UTC
servicios-basesdatos-db-1 | creating configuration files ... ok
servicios-basesdatos-db-1 | 2023-01-31 09:07:54.976 UTC [83] FATAL: data directory "/var/lib/postgresql/data" has wrong ownership
servicios-basesdatos-db-1 | 2023-01-31 09:07:54.976 UTC [83] HINT: The server must be started by the user that owns the data directory.
servicios-basesdatos-db-1 | child process exited with exit code 1
servicios-basesdatos-db-1 | initdb: removing contents of data directory "/var/lib/postgresql/data"
我也不能给我的 Docker 。
我怎样才能修好它,使它工作呢?
2条答案
按热度按时间h7appiyu1#
我觉得这条线很重要
您可以尝试此解决方案(初始化卷中的卷),如:
ycl3bljg2#
如果您查看docker文件(如https://github.com/docker-library/postgres/blob/41bd7bf3f487e6dc0036fd73efaff6ccb6fbbacd/14/bullseye/Dockerfile中的图像所示),您将看到他们创建了一个ID为999的用户。我猜您的本地数据目录归您所有,在大多数情况下,该目录为用户1000。因此,如果您将数据目录更改为用户999,它应该可以正常工作。