docker4drupal icon indicating copy to clipboard operation
docker4drupal copied to clipboard

Mounted Codebase using drupal-composer/drupal-project issue

Open jaydee18 opened this issue 6 years ago • 1 comments

Codebase mounted codebase

Describe your issue

The documentation is confusing, the docker4drupal.tar.gz archive is incomplete and the configuration in the docker-compose.yml doesn't seem to work.

In documentation, Step 4 is unclear. I assume it means to edit docker-compose.yml but it's not stated. (I'm not using it, but FYI, APACHE_SERVER_ROOT variable doesn't exist ... I assume APACHE_DOCUMENT_ROOT?) Step 5 refers to .env file ... it's not there. Package includes .env.example - but it doesn't include most of the variables referred to in the docker-compose.yml. I tried copying the .env file from the vanilla version.

After running "make up", visiting drupal.docker.localhost:8000 gives me an error message. Checking the logs in the PHP container outputs the following

MacBook-Pro:docker-composer jon$ docker logs rme_php
[05-Jan-2019 04:09:38] NOTICE: fpm is running, pid 1
[05-Jan-2019 04:09:38] NOTICE: ready to handle connections
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "NOTICE: PHP message: PDOException: SQLSTATE[HY000] [2002] Connection refused in /var/www/html/web/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php on line 79 #0 /var/www/html/web/core/lib/Drupal/Core/Database/Driver/mysql/Connection.php(420): PDO->__construct('mysql:host=mari...', ‘dbuser’, ‘dbpass’, Array)"
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "#1 /var/www/html/web/core/lib/Drupal/Core/Database/Database.php(371): Drupal\Core\Database\Driver\mysql\Connection::open(Array)"
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "#2 /var/www/html/web/core/lib/Drupal/Core/Database/Database.php(166): Drupal\Core\Database\Database::openConnection('default', 'default')"
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "#3 [internal function]: Drupal\Core\Database\Database::getConnection('default')"
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "#4 /var/www/html/web/core/lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php(79): call_user_func_array('Drupal\\Core\\Dat...', Array)"
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "#5 /var/www/html/web/core/lib/Drupal/Component/DependencyInjection/Container.php(171): Drupal\Component\DependencyInjection\PhpArrayContainer->createService(Array, 'database')"
[05-Jan-2019 04:09:55] WARNING: [pool www] child 80 said into stderr: "#6 /var/www/html/web/co..."
172.29.0.9 -  05/Jan/2019:04:09:55 +0000 "GET /index.php" 500

docker-compose.yml

version: "3"

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.
#      - /path/to/mariadb/data/on/host:/var/lib/mysql # Use bind mount

  php:
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_php"
    environment:
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      DB_HOST: $DB_HOST
      DB_USER: $DB_USER
      DB_PASSWORD: $DB_PASSWORD
      DB_NAME: $DB_NAME
      DB_DRIVER: $DB_DRIVER
      COLUMNS: 80 # Set 80 columns for docker exec -it.
## Read instructions at https://wodby.com/stacks/drupal/docs/local/xdebug/
#      PHP_XDEBUG: 1
#      PHP_XDEBUG_DEFAULT_ENABLE: 1
#      PHP_XDEBUG_REMOTE_CONNECT_BACK: 0
#      PHP_IDE_CONFIG: serverName=my-ide
#      PHP_XDEBUG_REMOTE_HOST: host.docker.internal # Docker 18.03+ & Linux/Mac/Win
#      PHP_XDEBUG_REMOTE_HOST: 172.17.0.1 # Linux, Docker < 18.03
#      PHP_XDEBUG_REMOTE_HOST: 10.254.254.254 # macOS, Docker < 18.03
#      PHP_XDEBUG_REMOTE_HOST: 10.0.75.1 # Windows, Docker < 18.03
    volumes:
      # - ./:/var/www/html
## For macOS users (https://wodby.com/stacks/drupal/docs/local/docker-for-mac/)
      - ./:/var/www/html:cached # User-guided caching
#      - docker-sync:/var/www/html # Docker-sync
## For XHProf and Xdebug profiler traces
#      - files:/mnt/files

  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_SERVER_ROOT: /var/www/html/web
      NGINX_VHOST_PRESET: $NGINX_VHOST_PRESET
#      NGINX_DRUPAL_FILE_PROXY_URL: http://example.com
    volumes:
      # - ./:/var/www/html
# For macOS users (https://wodby.com/stacks/drupal/docs/local/docker-for-mac/)
      - ./:/var/www/html:cached # User-guided caching
#      - docker-sync:/var/www/html # Docker-sync
    labels:
      - 'traefik.backend=${PROJECT_NAME}_nginx'
      - 'traefik.port=80'
      - 'traefik.frontend.rule=Host:${PROJECT_BASE_URL}'

  mailhog:
    image: mailhog/mailhog
    container_name: "${PROJECT_NAME}_mailhog"
    labels:
      - 'traefik.backend=${PROJECT_NAME}_mailhog'
      - 'traefik.port=8025'
      - 'traefik.frontend.rule=Host:mailhog.${PROJECT_BASE_URL}'

#  postgres:
#    image: wodby/postgres:$POSTGRES_TAG
#    container_name: "${PROJECT_NAME}_postgres"
#    stop_grace_period: 30s
#    environment:
#      POSTGRES_PASSWORD: $DB_PASSWORD
#      POSTGRES_DB: $DB_NAME
#      POSTGRES_USER: $DB_USER
#    volumes:
#      - ./postgres-init:/docker-entrypoint-initdb.d # Place init file(s) here.
#      - /path/to/postgres/data/on/host:/var/lib/postgresql/data # Use bind mount

#  apache:
#    image: wodby/apache:$APACHE_TAG
#    container_name: "${PROJECT_NAME}_apache"
#    depends_on:
#      - php
#    environment:
#      APACHE_LOG_LEVEL: debug
#      APACHE_BACKEND_HOST: php
#      APACHE_VHOST_PRESET: php
#      APACHE_DOCUMENT_ROOT: /var/www/html/web
#    volumes:
#      - ./:/var/www/html
## For macOS users (https://wodby.com/stacks/drupal/docs/local/docker-for-mac/)
##      - ./:/var/www/html:cached # User-guided caching
##      - docker-sync:/var/www/html # Docker-sync
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_apache'
#      - 'traefik.port=80'
#      - 'traefik.frontend.rule=Host:${PROJECT_BASE_URL}'

#  varnish:
#    image: wodby/varnish:$VARNISH_TAG
#    container_name: "${PROJECT_NAME}_varnish"
#    depends_on:
#      - nginx
#    environment:
#      VARNISH_SECRET: secret
#      VARNISH_BACKEND_HOST: nginx
#      VARNISH_BACKEND_PORT: 80
#      VARNISH_CONFIG_PRESET: drupal
#      VARNISH_PURGE_EXTERNAL_REQUEST_HEADER: X-Real-IP
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_varnish'
#      - 'traefik.port=6081'
#      - 'traefik.frontend.rule=Host:varnish.${PROJECT_BASE_URL}'

#  redis:
#    container_name: "${PROJECT_NAME}_redis"
#    image: wodby/redis:$REDIS_TAG

#  adminer:
#    container_name: "${PROJECT_NAME}_adminer"
#    image: wodby/adminer:$ADMINER_TAG
#    environment:
## For PostgreSQL:
##      ADMINER_DEFAULT_DB_DRIVER: pgsql
#      ADMINER_DEFAULT_DB_HOST: $DB_HOST
#      ADMINER_DEFAULT_DB_NAME: $DB_NAME
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_adminer'
#      - 'traefik.port=9000'
#      - 'traefik.frontend.rule=Host:adminer.${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
      PHP_UPLOAD_MAX_FILESIZE: 1G
      PHP_MAX_INPUT_VARS: 1G
    labels:
      - 'traefik.backend=${PROJECT_NAME}_pma'
      - 'traefik.port=80'
      - 'traefik.frontend.rule=Host:pma.${PROJECT_BASE_URL}'

  solr:
    image: wodby/solr:$SOLR_TAG
    container_name: "${PROJECT_NAME}_solr"
    environment:
      SOLR_DEFAULT_CONFIG_SET: $SOLR_CONFIG_SET
      SOLR_HEAP: 1024m
    labels:
      - 'traefik.backend=${PROJECT_NAME}_solr'
      - 'traefik.port=8983'
      - 'traefik.frontend.rule=Host:solr.${PROJECT_BASE_URL}'

#  drupal-node:
#    image: wodby/drupal-node:$DRUPAL_NODE_TAG
#    container_name: "${PROJECT_NAME}_drupal_nodejs"
#    environment:
#       NODE_SERVICE_KEY: node-service-key
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_nodejs'
#      - 'traefik.port=8080'
#      - 'traefik.frontend.rule=Host:nodejs.${PROJECT_BASE_URL}'
#    volumes:
#      - ./path/to/your/single-page-app:/app
#    command: sh -c 'npm install && npm run start'

#  memcached:
#    container_name: "${PROJECT_NAME}_memcached"
#    image: wodby/memcached:$MEMCACHED_TAG

#  rsyslog:
#    container_name: "${PROJECT_NAME}_rsyslog"
#    image: wodby/rsyslog:$RSYSLOG_TAG

#  athenapdf:
#    image: arachnysdocker/athenapdf-service:$ATHENAPDF_TAG
#    container_name: "${PROJECT_NAME}_athenapdf"
#    environment:
#      WEAVER_AUTH_KEY: weaver-auth-key
#      WEAVER_ATHENA_CMD: "athenapdf -S"
#      WEAVER_MAX_WORKERS: 10
#      WEAVER_MAX_CONVERSION_QUEUE: 50
#      WEAVER_WORKER_TIMEOUT: 90
#      WEAVER_CONVERSION_FALLBACK: "false"

#  node:
#    image: wodby/node:$NODE_TAG
#    container_name: "${PROJECT_NAME}_node"
#    working_dir: /var/www/html/path/to/theme/to/build
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_node'
#      - 'traefik.port=3000'
#      - 'traefik.frontend.rule=Host:front.${PROJECT_BASE_URL}'
#    expose:
#      - "3000"
#    volumes:
#      - ./:/var/www/html
#    command: sh -c 'yarn install && yarn run start'

#  blackfire:
#    image: blackfire/blackfire
#    container_name: "${PROJECT_NAME}_blackfire"
#    environment:
#      BLACKFIRE_SERVER_ID: XXXXX
#      BLACKFIRE_SERVER_TOKEN: YYYYY

#  webgrind:
#    image: wodby/webgrind:$WEBGRIND_TAG
#    container_name: "${PROJECT_NAME}_webgrind"
#    environment:
#      WEBGRIND_PROFILER_DIR: /mnt/files/xdebug/profiler
#    labels:
#      - 'traefik.backend=webgrind'
#      - 'traefik.port=8080'
#      - 'traefik.frontend.rule=Host:webgrind.${PROJECT_BASE_URL}'
#    volumes:
#      - files:/mnt/files

#  elasticsearch:
#    image: wodby/elasticsearch:$ELASTICSEARCH_TAG
#    environment:
#      ES_JAVA_OPTS: "-Xms500m -Xmx500m"
#    ulimits:
#      memlock:
#        soft: -1
#        hard: -1

#  kibana:
#    image: wodby/kibana:$KIBANA_TAG
#    depends_on:
#      - elasticsearch
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_kibana'
#      - 'traefik.port=5601'
#      - 'traefik.frontend.rule=Host:kibana.php.docker.localhost'

#  opensmtpd:
#    container_name: "${PROJECT_NAME}_opensmtpd"
#    image: wodby/opensmtpd:$OPENSMTPD_TAG

#  xhprof:
#    image: wodby/xhprof:$XHPROF_TAG
#    restart: always
#    volumes:
#      - files:/mnt/files
#    labels:
#      - 'traefik.backend=${PROJECT_NAME}_xhprof'
#      - 'traefik.port=8080'
#      - 'traefik.frontend.rule=Host:xhprof.${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.backend=${PROJECT_NAME}_portainer'
      - 'traefik.port=9000'
      - 'traefik.frontend.rule=Host:portainer.${PROJECT_BASE_URL}'

  traefik:
    image: traefik
    container_name: "${PROJECT_NAME}_traefik"
    command: -c /dev/null --web --docker --logLevel=INFO
    ports:
      - '8000:80'
      - '8080:8080' # Dashboard
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

#volumes:
## Docker-sync for macOS users
#  docker-sync:
#    external: true
## For Xdebug profiler
#  files:

.env

MYSQL_DATABASE=rme
MYSQL_HOSTNAME=mariadb
MYSQL_PASSWORD=dbpass
MYSQL_PORT=3306
MYSQL_USER=dbuser

### PROJECT SETTINGS

PROJECT_NAME=rme
PROJECT_BASE_URL=rme.localhost

DB_NAME=rme
DB_USER=dbuser
DB_PASSWORD=dbpass
DB_ROOT_PASSWORD=dbroot
DB_HOST=mariadb
DB_DRIVER=mysql

### --- MARIADB ----

MARIADB_TAG=10.1-3.3.12
#MARIADB_TAG=10.3-3.3.11
#MARIADB_TAG=10.2-3.3.11

### --- VANILLA DRUPAL ----

DRUPAL_TAG=8-4.10.0
#DRUPAL_TAG=7-4.10.0

### --- PHP ----

# Linux (uid 1000 gid 1000)

PHP_TAG=7.2-dev-4.10.0
#PHP_TAG=7.3-dev-4.10.0
#PHP_TAG=7.1-dev-4.10.0
#PHP_TAG=5.6-dev-4.10.0

# macOS (uid 501 gid 20)

#PHP_TAG=7.3-dev-macos-4.10.0
#PHP_TAG=7.2-dev-macos-4.10.0
#PHP_TAG=7.1-dev-macos-4.10.0
#PHP_TAG=5.6-dev-macos-4.10.0

### --- NGINX ----

NGINX_TAG=1.15-5.2.1
#NGINX_TAG=1.14-5.1.0

NGINX_VHOST_PRESET=drupal8
#NGINX_VHOST_PRESET=drupal7
#NGINX_VHOST_PRESET=drupal6

### --- SOLR ---

SOLR_CONFIG_SET="search_api_solr_8.x-2.3"
#SOLR_CONFIG_SET="search_api_solr_8.x-1.2"
#SOLR_CONFIG_SET="search_api_solr_7.x-1.14"

SOLR_TAG=7.5-3.0.7
#SOLR_TAG=7.4-3.0.7
#SOLR_TAG=7.3-3.0.7
#SOLR_TAG=7.2-3.0.7
#SOLR_TAG=7.1-3.0.7
#SOLR_TAG=6.6-3.0.7
#SOLR_TAG=5.5-3.0.7
#SOLR_TAG=5.4-3.0.7

### --- ELASTICSEARCH ---

ELASTICSEARCH_TAG=6.2-3.0.3
#ELASTICSEARCH_TAG=6.1-3.0.3
#ELASTICSEARCH_TAG=6.0-3.0.3
#ELASTICSEARCH_TAG=5.6-3.0.3
#ELASTICSEARCH_TAG=5.5-3.0.3
#ELASTICSEARCH_TAG=5.4-3.0.3

### --- KIBANA ---

KIBANA_TAG=6.2-3.0.3
#KIBANA_TAG=6.1-3.0.3
#KIBANA_TAG=6.0-3.0.3
#KIBANA_TAG=5.6-3.0.3
#KIBANA_TAG=5.5-3.0.3
#KIBANA_TAG=5.4-3.0.3

### --- REDIS ---

REDIS_TAG=4-3.0.3
#REDIS_TAG=5-3.0.3

### --- NODE ---

NODE_TAG=10-0.10.0
#NODE_TAG=8-0.9.2
#NODE_TAG=6-0.9.2

### --- VARNISH ---

VARNISH_TAG=4.1-4.0.0
#VARNISH_TAG=6.0-4.0.0

### --- POSTGRESQL ----

POSTGRES_TAG=11-1.5.0
#POSTGRES_TAG=10-1.5.0
#POSTGRES_TAG=9.6-1.5.0
#POSTGRES_TAG=9.5-1.5.0
#POSTGRES_TAG=9.4-1.5.0
#POSTGRES_TAG=9.3-1.5.0

### OTHERS

ADMINER_TAG=4.6-3.3.0
APACHE_TAG=2.4-4.0.2
ATHENAPDF_TAG=2.10.0
DRUPAL_NODE_TAG=1.0-2.0.0
MEMCACHED_TAG=1-2.2.1
OPENSMTPD_TAG=6.0-1.4.0
RSYSLOG_TAG=latest
WEBGRIND_TAG=1.5-1.7.0
XHPROF_TAG=1.1.0

jaydee18 avatar Jan 05 '19 04:01 jaydee18

In documentation, Step 4 is unclear. I assume it means to edit docker-compose.yml but it's not stated. (I'm not using it, but FYI, APACHE_SERVER_ROOT variable doesn't exist ... I assume APACHE_DOCUMENT_ROOT?)

You're right, we changed the env var name but did not update the docs, now updated

Step 5 refers to .env file ... it's not there. Package includes .env.example - but it doesn't include most of the variables referred to in the docker-compose.yml. I tried copying the .env file from the vanilla version.

Which env vars are missing? I see all env vars are in place. Also, I see you added $MYSQL_ but there's no need to. See details on .env file in docker docs: https://docs.docker.com/compose/env-file/

csandanov avatar Jan 14 '19 07:01 csandanov