Вот кусок текста в 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?
Здравствуйте, 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.
Возмите
официальный образ и запускайте его по инструкции.
Здравствуйте, 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"]
Здравствуйте, Igore, Вы писали:
I>Это лучше не в докере делать, как вы БД то хранить собрались?
Здравствуйте, Glestwid, Вы писали:
G>Что у меня неправильно с запуском PostgreSQL?
Как уже написали, CMD должен запускать основной процесс контейнера и команда запуска не должна завершаться. Например, вот мой образ постгреса
https://github.com/scf37/docker-postgres