Почему в Docker не стартует PostgreSQL?
От: Glestwid  
Дата: 12.03.23 22:43
Оценка:
Вот кусок текста в Dockerfile:

RUN apt-get update && \
apt-get install -y postgresql postgresql-contrib && \
service postgresql start && \
su — postgres -c "psql -c \"CREATE USER upostgres WITH PASSWORD 'docker';\"" && \
su — postgres -c "createdb -O upostgres globalblue-demo-db"
CMD service postgresql start


Вот лог из студии:

1> #8 123.1 Processing triggers for libc-bin (2.31-13+deb11u5) ...
1> #8 124.3 Starting PostgreSQL 13 database server: main.
1> #8 130.4 CREATE ROLE
1> #8 DONE 135.5s
1>
1> #9 exporting to image
1> #9 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
1> #9 exporting layers
1> #9 exporting layers 17.1s done
1> #9 writing image sha256:da2311d667e1445cdd8683e4facfd5fa13a38e323fbb5eb4f58c8572ae574de9 0.1s done
1> #9 naming to docker.io/library/backendapi:dev 0.0s done
1> #9 DONE 17.5s


Но после запуска контейнера из студии я, выполнив

service postgresql status


в нужном контейнере вижу

service postgresql status
# 13/main (port 5432): down



Что у меня неправильно с запуском PostgreSQL?
Re: Почему в Docker не стартует PostgreSQL?
От: Doom100500 Израиль  
Дата: 13.03.23 06:54
Оценка: +1
Здравствуйте, Glestwid, Вы писали:

  cut
G>Вот кусок текста в Dockerfile:

G>

G>RUN apt-get update && \
G> apt-get install -y postgresql postgresql-contrib && \
G> service postgresql start && \
G> su — postgres -c "psql -c \"CREATE USER upostgres WITH PASSWORD 'docker';\"" && \
G> su — postgres -c "createdb -O upostgres globalblue-demo-db"
G>CMD service postgresql start


G>Вот лог из студии:


G>

1>> #8 123.1 Processing triggers for libc-bin (2.31-13+deb11u5) ...
1>> #8 124.3 Starting PostgreSQL 13 database server: main.
1>> #8 130.4 CREATE ROLE
1>> #8 DONE 135.5s
1>>
1>> #9 exporting to image
1>> #9 sha256:e8c613e07b0b7ff33893b694f7759a10d42e180f2b4dc349fb57dc6b71dcab00
1>> #9 exporting layers
1>> #9 exporting layers 17.1s done
1>> #9 writing image sha256:da2311d667e1445cdd8683e4facfd5fa13a38e323fbb5eb4f58c8572ae574de9 0.1s done
1>> #9 naming to docker.io/library/backendapi:dev 0.0s done
1>> #9 DONE 17.5s


G>Но после запуска контейнера из студии я, выполнив


G>

G>service postgresql status


G>в нужном контейнере вижу


G>

G>service postgresql status
G># 13/main (port 5432): down




G>Что у меня неправильно с запуском PostgreSQL?


Вы что-то не так делаете. В контеинере не должно быть системы инициализации, так как они созданы для запуска одного процесса с его окружением. А у вас запуск сервиса через systemd.
Возмите официальный образ и запускайте его по инструкции.
Спасибо за внимание
Re: Почему в Docker не стартует PostgreSQL?
От: Igore Россия  
Дата: 14.03.23 09:07
Оценка:
Здравствуйте, Glestwid, Вы писали:

G>Вот кусок текста в Dockerfile:

G> su — postgres -c "psql -c \"CREATE USER upostgres WITH PASSWORD 'docker';\"" && \
G> su — postgres -c "createdb -O upostgres globalblue-demo-db"
Это лучше не в докере делать, как вы БД то хранить собрались?
G>CMD service postgresql start
https://github.com/docker-library/postgres/blob/ef45b990868d5a0053bd30fdbae36551b46b76c9/15/bullseye/Dockerfile
Надо CMD ["postgres"]
Re[2]: Почему в Docker не стартует PostgreSQL?
От: korvin_  
Дата: 26.04.23 17:10
Оценка:
Здравствуйте, Igore, Вы писали:

I>Это лучше не в докере делать, как вы БД то хранить собрались?


Re: Почему в Docker не стартует PostgreSQL?
От: scf  
Дата: 26.04.23 17:24
Оценка:
Здравствуйте, Glestwid, Вы писали:

G>Что у меня неправильно с запуском PostgreSQL?


Как уже написали, CMD должен запускать основной процесс контейнера и команда запуска не должна завершаться. Например, вот мой образ постгреса https://github.com/scf37/docker-postgres
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.