@BezdomnyiBox
Студент программной инженерии

Почему postgres не запускается во второй раз?

У меня проект с laravel. В контейнере есть php и еще postgresql. При первом docker run -p 8000:8000 --name product-catalog-container product-catalog-app все работает хорошо. Потом после остановки и повторного запуска возникает 127.0.0.1:5432 - rejecting connections, а потом после 3-4 минут localhost запускается.

# Используем официальный образ PHP с версией 8 и поддержкой FPM
FROM php:8.1-fpm

ENV DEBIAN_FRONTEND=noninteractive

# Установка необходимых пакетов и расширений PHP
RUN apt-get update && apt-get install -y \
    gnupg2 \
    git \
    curl \
    zip \
    unzip \
    libpq-dev \
    libzip-dev \
    sudo \
    vim \
    nano \
    postgresql \
    postgresql-contrib \
    && docker-php-ext-install pdo pdo_pgsql

# Установка Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Копирование файлов проекта
WORKDIR /var/www/html
COPY . /var/www/html

# Установка зависимостей Laravel
RUN composer install --ignore-platform-reqs

# Копирование файлов окружения и генерация ключа приложения
COPY .env .env
RUN php artisan key:generate

# Копирование entrypoint скрипта
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh


# Открытие порта для приложений
EXPOSE 8000
# RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/15/main/pg_hba.conf
# RUN echo "listen_addresses='127.0.0.1'" >> /etc/postgresql/15/main/postgresql.conf

# Установка команды запуска
CMD ["entrypoint.sh"]


# Запуск PostgreSQL
# service postgresql stop
rm /var/lib/postgresql/15/main/postmaster.pid
service postgresql start

# Ожидание запуска базы данных
until pg_isready -h 127.0.0.1 -p 5432 -U postgres; do
  echo "Ожидание запуска PostgreSQL..."
  sleep 1
done

# Проверка и создание пользователя и базы данных
DB_EXIST=$(sudo -u postgres psql -tAc "SELECT 1 FROM pg_database WHERE datname='product_catalog'")
if [ "$DB_EXIST" != "1" ]; then
  echo "Создание пользователя и базы данных..."
  sudo -u postgres psql -c "CREATE USER laravel WITH PASSWORD 'password';"
  sudo -u postgres psql -c "CREATE DATABASE product_catalog OWNER laravel;"
  sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE product_catalog TO laravel;"
else
  echo "База данных уже существует. Пропуск создания."
fi


# Выполнение миграций и сидеров с проверкой
echo "Выполнение миграций..."
php artisan migrate --force

echo "Выполнение сидеров..."
php artisan db:seed --force

# Запуск приложения
php artisan serve --host=0.0.0.0 --port=8000


2024-10-31 10:23:13 Starting PostgreSQL 15 database server: mainError: /usr/lib/postgresql/15/bin/pg_ctl /usr/lib/postgresql/15/bin/pg_ctl start -D /var/lib/postgresql/15/main -l /var/log/postgresql/postgresql-15-main.log -s -o  -c config_file="/etc/postgresql/15/main/postgresql.conf"  exited with status 1: 
2024-10-31 10:23:13 2024-10-31 00:22:14.101 UTC [23] LOG:  starting PostgreSQL 15.8 (Debian 15.8-0+deb12u1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14) 12.2.0, 64-bit
2024-10-31 10:23:13 2024-10-31 00:22:14.101 UTC [23] LOG:  listening on IPv6 address "::1", port 5432
2024-10-31 10:23:13 2024-10-31 00:22:14.101 UTC [23] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2024-10-31 10:23:13 2024-10-31 00:22:14.244 UTC [23] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2024-10-31 10:23:13 2024-10-31 00:22:14.402 UTC [26] LOG:  database system was interrupted; last known up at 2024-10-31 00:20:51 UTC
2024-10-31 10:23:13 2024-10-31 00:22:24.492 UTC [26] LOG:  syncing data directory (fsync), elapsed time: 10.07 s, current path: ./base/4/2658
2024-10-31 10:23:13 2024-10-31 00:22:34.578 UTC [26] LOG:  syncing data directory (fsync), elapsed time: 20.16 s, current path: ./base/4/2680
2024-10-31 10:23:13 2024-10-31 00:22:44.431 UTC [26] LOG:  syncing data directory (fsync), elapsed time: 30.01 s, current path: ./base/4/PG_VERSION
2024-10-31 10:23:13 2024-10-31 00:22:54.555 UTC [26] LOG:  syncing data directory (fsync), elapsed time: 40.13 s, current path: ./base/4/1249_vm
2024-10-31 10:23:13 2024-10-31 00:23:04.431 UTC [26] LOG:  syncing data directory (fsync), elapsed time: 50.01 s, current path: ./base/4/13406
2024-10-31 10:23:13 pg_ctl: server did not start in time ... failed!
2024-10-31 10:23:13  failed!
2024-10-31 10:23:13 127.0.0.1:5432 - rejecting connections
2024-10-31 10:23:13 Ожидание запуска PostgreSQL...
2024-10-31 10:23:14 127.0.0.1:5432 - rejecting connections
2024-10-31 10:23:14 Ожидание запуска PostgreSQL...
2024-10-31 10:23:16 127.0.0.1:5432 - rejecting connections
2024-10-31 10:23:16 Ожидание запуска PostgreSQL...
  • Вопрос задан
  • 217 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы