Я создал докер-контейнер со следующими конфигурациями:
Файл Docker
Код: Выделить всё
# Dockerfile
FROM php:8.3-fpm
# PHP INI
COPY /docker/php/php.ini /usr/local/etc/php/php.ini
# Install dependencies
RUN apt-get update && apt-get install -y \
libpng-dev \
libjpeg62-turbo-dev \
libfreetype6-dev \
zip \
unzip \
git \
curl \
libonig-dev \
libxml2-dev \
libpq-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install pdo_mysql pdo_pgsql mbstring pdo pgsql exif pcntl bcmath gd
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# Set working directory
WORKDIR /var/www
# Copy existing application directory contents
COPY . /var/www
# Copy existing application directory permissions
COPY --chown=www-data:www-data . /var/www
# Install Composer dependencies
RUN composer install --prefer-dist --no-progress --no-interaction --no-dev
# Expose port 9000
EXPOSE 9000
# Start Laravel Octane
CMD ["php", "artisan", "octane:start", "--server=frankenphp", "--host=0.0.0.0", "--port=9000"]
Код: Выделить всё
services:
frankenphp:
image: dunglas/frankenphp
container_name: frankenphp
restart: unless-stopped
ports:
- "8000:80"
- "443:443"
volumes:
- .:/app
- ./certs:/certs
- ./docker/caddy/Caddyfile:/etc/caddy/Caddyfile
networks:
- app-network
db:
image: postgres:14-alpine
container_name: db
ports:
- "5432:5432"
volumes:
- ~/apps/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=password
networks:
- app-network
pgadmin:
image: dpage/pgadmin4
container_name: pgadmin
restart: unless-stopped
volumes:
- pgadmin_data:/var/lib/pgadmin
ports:
- "8080:80"
environment:
- PGADMIN_DEFAULT_EMAIL=email@email.com
- PGADMIN_DEFAULT_PASSWORD=password
networks:
- app-network
php:
build: .
container_name: php
volumes:
- .:/var/www
working_dir: /var/www
networks:
- app-network
composer:
image: composer:latest
container_name: composer
volumes:
- .:/app
working_dir: /app
networks:
- app-network
entrypoint: [ "composer" ]
redis:
image: redis:6-alpine
container_name: redis
ports:
- "6379:6379"
command: redis-server --requirepass "password"
networks:
- app-network
npm:
image: node:latest
container_name: npm
volumes:
- .:/app
working_dir: /app
networks:
- app-network
command: npm install
volumes:
pgadmin_data:
networks:
app-network:
driver: bridge
Код: Выделить всё
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=app
DB_USERNAME=app
DB_PASSWORD=password
Когда я запускаю:
docker compose up --build -d
затем я запускаю:
docker Compose run --rm php php artisanmigrate ИЛИ docker Compose run --rm php php artisanmigrate: свежее
Все работает и таблицы загружаются в базу данных.
Но при открытии приложения выдает ошибку:не удалось найти драйвер (соединение: pgsql, SQL: выберите * из «сессий», где «id» = YVQKOF5zkNoZv4yfC3A5MlcU64hYyD8gG9tv8O7o, ограничение 1)
в таблице сессий ничего не записано и выдает ошибку в драйвере. Не могу понять, в чем проблема... Буду рад, если кто-нибудь сталкивался с этим и помог мне.
Заранее спасибо
Я даже добавил внешний файл php.ini, в который добавил:
Код: Выделить всё
upload_max_filesize = 20M
post_max_size = 20M
max_execution_time = 60
memory_limit = 256M
extension=php_pgsql.so
docker-php-ext-install pdo_mysql pdo_pgsql mbstring pdo pgsql geolocation pcntl bcmath gd
Но ничего не происходит не получится.
Подробнее здесь: https://stackoverflow.com/questions/785 ... tion-pgsql