Не разворачивается контейнер, ловлю ошибку от postgres: initdb: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted
Та же ситуация происходила и на Ubuntu 16/17/18
Текущий: Deepin 15.5 (debian)
Видимо роскомпозор заблокировал и гугл переводчик. Очевидно нет прав на директорию.
Разберитесь где эта директория(в томе контейнера или прокидывается с хоста) и почему нет прав на нее.
key don, у меня такая же ошибка, подскажите, пожалуйста
Вот вывод директории внутри контейнера db:
drwx------ 19 postgres root 4096 Nov 6 09:59 .
drwxr-xr-x 1 postgres postgres 4096 Oct 18 23:39 ..
drwx------ 5 postgres postgres 4096 Nov 6 09:59 base
drwx------ 2 postgres postgres 4096 Nov 6 09:59 global
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_commit_ts
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_dynshmem
-rw------- 1 postgres postgres 4535 Nov 6 09:59 pg_hba.conf
-rw------- 1 postgres postgres 1636 Nov 6 09:59 pg_ident.conf
drwx------ 4 postgres postgres 4096 Nov 6 09:59 pg_logical
drwx------ 4 postgres postgres 4096 Nov 6 09:59 pg_multixact
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_notify
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_replslot
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_serial
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_snapshots
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_stat
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_stat_tmp
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_subtrans
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_tblspc
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_twophase
-rw------- 1 postgres postgres 3 Nov 6 09:59 PG_VERSION
drwx------ 3 postgres postgres 4096 Nov 6 09:59 pg_wal
drwx------ 2 postgres postgres 4096 Nov 6 09:59 pg_xact
-rw------- 1 postgres postgres 88 Nov 6 09:59 postgresql.auto.conf
-rw------- 1 postgres postgres 23750 Nov 6 09:59 postgresql.conf
-rw------- 1 postgres postgres 36 Nov 6 09:59 postmaster.opts
-rw------- 1 postgres postgres 94 Nov 6 09:59 postmaster.pid
И мой файл dockerfile:
FROM postgres
RUN adduser --disabled-password --gecos "" www-docker && \
echo "www-docker ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
RUN chmod 775 /var/lib/postgresql
RUN chown www-docker /var/lib/postgresql
USER www-docker
Но вообще моя цель сделать так, чтобы когда создавалась БД, она была с тем же пользователем, как и на локальном компьютере. Потому что иначе когда пересобираю контейнет постоянно вылезает ошибка, что у папки db не такие права
Grozwalker, уже поздновато, но напишу на слишком свежую голову, воспринимать на свой страх и риск:
Не понятно что вы хотели добиться таким докерфайлом. postgres и www-docker это разные пользватели, а USER в докерфайле применяется для команд RUN, CMD и ENTRYPOINT вашего слоя контейнера и то подозреваю что указывать его нужно до команд, а не после.
а initdb очевидно запускается под другим пользователем(не под www-docker, скорее всего postgres) и возможно не может получить доступ к /var/lib/postgresql
Ваша задача достаточно распространена, я бы погуглил перед созданием своего велосипеда, тк задача может быть сложнее чем кажется на первый взгляд. учитывая что это контейнеры и пользователи в хосте и в контейнере общие, то подозреваю, что root в контейнере и root в хосте имеют разные UID.
Ну и на правах зануды тут все же каталоги(директории), а не папки(нет графического интерфейса).