wodby / docker4drupal

Docker-based Drupal stack
https://wodby.com/docker4drupal
MIT License
1.24k stars 534 forks source link

Phpmyadmin with nginx webserver #459

Open Rhodungeon opened 3 years ago

Rhodungeon commented 3 years ago

Codebase Mounted codebase, OSX

Describe your issue Hi everybody, newbie here. I've succesfully installed a local webserver running Drupal 9. I've also installed phpmyadmin (pma in the docker-compose.yml file) using the standard image (just uncommenting the document). Unfortunately, when I go to the local address of PhpMyAdmin I see that the webserver is Apache (included in the standard image, Apache/2.4.38 - Debian -), but I would like to know how to link the nginx server in order to have pma working under it. I haven't found lots of informations or tutorial, so I'm asking if it is possible or not. Other Docker configurations relies on the configuration files, but I think that here I should just play with the compose.yml file. Is this correct?

I've tried also to install the alpine version of phpmyadmin because it comes without a preinstalled server, but no success in linking it to nginx. I'm struggling in finding a detailed documentation about how to properly configure docker4drupal, any help or hint about this is deepley appreciated.

I'm attaching just the uncommented part of my compose.yml file

Contents of your docker-compose.yml

version: "3.7"

services:
  mariadb:
    image: wodby/mariadb:$MARIADB_TAG
    container_name: "${PROJECT_NAME}_mariadb"
    stop_grace_period: 30s
    environment:
      MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
      MYSQL_DATABASE: $DB_NAME
      MYSQL_USER: $DB_USER
      MYSQL_PASSWORD: $DB_PASSWORD
    volumes:
#      - ./mariadb-init:/docker-entrypoint-initdb.d # Place init .sql file(s) here.
       - ./dbdata:/var/lib/mysql # Use bind mount

  php:
    image: wodby/drupal-php:7.3
    container_name: "${PROJECT_NAME}_php"
    environment:
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
#      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S opensmtpd:25
      DB_HOST: mariadb
#     DB_PORT: $DB_PORT
      DB_USER: drupal
      DB_PASSWORD: drupal
      DB_NAME: drupal
      DB_DRIVER: mysql
    volumes:
    - ./:/var/www/html
    links:
    - mariadb:db

  crond:
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_crond"
    environment:
      CRONTAB: "0 * * * * drush -r /var/www/html/web cron"
    command: sudo -E LD_PRELOAD=/usr/lib/preloadable_libiconv.so crond -f -d 0
    volumes:
    - ./:/var/www/html:cached

  nginx:
    image: wodby/nginx:$NGINX_TAG
    container_name: "${PROJECT_NAME}_nginx"
    depends_on:
    - php
    environment:
      NGINX_STATIC_OPEN_FILE_CACHE: "off"
      NGINX_ERROR_LOG_LEVEL: debug
      NGINX_BACKEND_HOST: php
#      NGINX_BACKEND_PORT:
      NGINX_SERVER_ROOT: /var/www/html/web
      NGINX_VHOST_PRESET: $NGINX_VHOST_PRESET
    #      NGINX_DRUPAL_FILE_PROXY_URL: http://example.com
    volumes:
    - ./:/var/www/html

## Alternative for macOS users: Mutagen https://wodby.com/docs/stacks/drupal/local#docker-for-mac
#    - mutagen:/var/www/html

    labels:
    - "traefik.http.routers.${PROJECT_NAME}_nginx.rule=Host(`${PROJECT_BASE_URL}`)"

  mailhog:
    image: mailhog/mailhog
    container_name: "${PROJECT_NAME}_mailhog"
    labels:
    - "traefik.http.services.${PROJECT_NAME}_mailhog.loadbalancer.server.port=8025"
    - "traefik.http.routers.${PROJECT_NAME}_mailhog.rule=Host(`mailhog.${PROJECT_BASE_URL}`)"

  pma:
    image: phpmyadmin/phpmyadmin
    container_name: "${PROJECT_NAME}_pma"
    environment:
      PMA_HOST: $DB_HOST
      PMA_USER: $DB_USER
      PMA_PASSWORD: $DB_PASSWORD
      UPLOAD_LIMIT: 1G
    labels:
    - "traefik.http.routers.${PROJECT_NAME}_pma.rule=Host(`pma.${PROJECT_BASE_URL}`)"

portainer:
    image: portainer/portainer
    container_name: "${PROJECT_NAME}_portainer"
    command: --no-auth -H unix:///var/run/docker.sock
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock
    labels:
    - "traefik.http.routers.${PROJECT_NAME}_portainer.rule=Host(`portainer.${PROJECT_BASE_URL}`)"

  traefik:
    image: traefik:v2.0
    container_name: "${PROJECT_NAME}_traefik"
    command: --api.insecure=true --providers.docker
    ports:
    - '8888:80'
#    - '8080:8080' # Dashboard
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
mralexho commented 3 years ago

@Rhodungeon looking at your compose file, you should be able to reach phpmyadmin at http://pma.${PROJECT_BASE_URL}:8888

Rhodungeon commented 3 years ago

Thanks! That was the correct address!