Zuerst einmal brauchen wir ein Dockerfile für den PHP und Apache Anteil. Man beachte vor allem das Hinzufügen der mysql und pdo - Elemente, die eine PHP Datenbankanbindung braucht
FROM php:8.0-apache RUN apt-get update && apt-get upgrade -y RUN cd /var/www/html RUN apt-get install -y git unzip libssh-dev RUN docker-php-ext-install mysqli pdo pdo_mysql && docker-php-ext-enable mysqli pdo pdo_mysql RUN yes '' | pecl install mongodb && echo "extension=mongodb.so" > $PHP_INI_DIR/conf.d/mongo.ini RUN curl https://getcomposer.org/installer -o composer_installer.php RUN php composer_installer.php RUN php composer.phar require mongodb/mongodb
Dieses Dockerfile binden wir dann in das restliche docker-compose.yml ein:
Beim Verbinden mper phpmyadmin nicht vergessen, das der Root- Account bei MySQL auch tatsächlich root heißt und nicht irgendwie anders
# ./docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: myadminpassword
MYSQL_DATABASE: generic_db
MYSQL_USER: bpadmin
MYSQL_PASSWORD: mypassword
ports:
- "9906:3306"
web:
build:
context: .
dockerfile: Dockerfile
container_name: php_web
depends_on:
- db
volumes:
- ./php/:/var/www/html/
ports:
- "8100:80"
stdin_open: true
tty: true
pma:
image: phpmyadmin
container_name: phpmyadmin
environment:
phpmyadmin: https://my_real_domain.com/phpmyadmin/
ports:
- "9910:80"