РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗dcPhMyEv 28 of 30 menu
◀ ▶

Переменные подключения в Docker

Переменные подключения передают сценарию имя сервера, базу и пароль. Значения задают в блоке environment у сервиса app, а PHP читает их функцией getenv без прошивки секретов в файл на диске. Соединение PDO в этом шаге ещё не открываем.

Сервис db на mysql:9.7 с базой app и пользователем app. У app четыре переменные для будущего PDO. Файл compose.yaml:

services: web: image: nginx ports: - "8080:80" volumes: - ./site:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf app: build: . environment: DB_HOST: db DB_NAME: app DB_USER: app DB_PASSWORD: demo volumes: - ./site:/var/www/html depends_on: - db db: image: mysql:9.7 environment: MYSQL_ROOT_PASSWORD: demo MYSQL_DATABASE: app MYSQL_USER: app MYSQL_PASSWORD: demo

Образ PHP собирают с pdo_mysql в Dockerfile:

FROM php:8.5-fpm RUN docker-php-ext-install pdo_mysql

Конфиг nginx передаёт .php в FPM по имени app:

server { listen 80; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass app:9000; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }

Сценарий пока только печатает хост из окружения:

<?php echo getenv('DB_HOST');

После подъёма страница по localhost:8080 показывает строку db - имя сервиса MySQL в сети compose. Запуск:

docker compose up -d --build

Задайте сервису worker переменные DB_HOST со значением data и выведите это значение на отдельной странице сценария.

Убедитесь в браузере, что на экране видно имя хоста из окружения, а не пароль базы.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить