MySQL, MongoDB, PHP, phpMyAdmin und Apache als Docker

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

Dockerfile
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
# ./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"