У меня проект с 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...