wodby / docker4drupal

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

Default installation with mounted database drupal gives error. How to proceed? #561

Closed justmeonthegit closed 1 year ago

justmeonthegit commented 1 year ago

Codebase mounted codebase

I followed the instruction on page for a install of a plain installement of drupal. It is not working ! https://wodby.com/docs/1.0/stacks/drupal/local/

I did the following steps composer create-project drupal/recommended-project bo_drupaldefault Downloaded and extracted docker4drupal.tar.gz edited the env file (see below) removed the file docker-compose.override.yml created a local database on localhost added the db connection to the docker file run docker-compose up -d

Describe your issue A clear and concise description of your issue. I get an error:

Additional uncaught exception thrown while handling exception. Original Error: Call to a member function setFormClass() on null in system_entity_type_build() (line 1201 of /var/www/html/web/core/modules/system/system.module).

system_entity_type_build() (Line: 118) Drupal\Core\Entity\EntityTypeManager->Drupal\Core\Entity{closure}() (Line: 388)

Output of docker info

Paste here

Contents of your docker-compose.yml

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:
      SSMTP_MAILHUB: mailhog:1025
#      SSMTP_MAILHUB: opensmtpd:25
      PHP_SENDMAIL_PATH: '"/usr/bin/dos2unix -u | /usr/sbin/ssmtp -t -f"'
#      DB_HOST: $DB_HOST
#      DB_PORT: $DB_PORT
#      DB_USER: $DB_USER
#      DB_PASSWORD: $DB_PASSWORD
#      DB_NAME: $DB_NAME
#      DB_DRIVER: $DB_DRIVER
#      DRUSH_OPTIONS_URI: "http://${PROJECT_BASE_URL}:${PROJECT_PORT}"
#      PHP_FPM_USER: wodby
#      PHP_FPM_GROUP: wodby
#      COLUMNS: 80 # Set 80 columns for docker exec -it.
#      # Read instructions at https://wodby.com/docs/stacks/php/local/#xdebug
#      PHP_XDEBUG: 1
#      PHP_XDEBUG_MODE: debug
#      PHP_XDEBUG_MODE: profile
#      PHP_XDEBUG_USE_COMPRESSION: false
#      PHP_IDE_CONFIG: serverName=my-ide
#      PHP_XDEBUG_IDEKEY: "my-ide"
#      PHP_XDEBUG_CLIENT_HOST: 172.17.0.1 # Linux
#      PHP_XDEBUG_CLIENT_HOST: host.docker.internal # Docker 18.03+ Mac/Win
#      PHP_XDEBUG_CLIENT_HOST: 10.0.75.1 # Windows, Docker < 18.03
#      PHP_XDEBUG_LOG: /tmp/php-xdebug.log
#      # PHPUnit Drupal testing configurations
#      SIMPLETEST_BASE_URL: "http://nginx"
#      SIMPLETEST_DB: "${DB_DRIVER}://${DB_USER}:${DB_PASSWORD}@${DB_HOST}/${DB_NAME}#tests_"
#      MINK_DRIVER_ARGS_WEBDRIVER: '["chrome", {"browserName":"chrome","goog:chromeOptions":{"args":["--disable-gpu","--headless"]}}, "http://chrome:9515"]'
    volumes:
    - ./:/var/www/html:cached
## Alternative for macOS users: Mutagen https://wodby.com/docs/stacks/drupal/local#docker-for-mac
#    - drupal:/var/www/html
## For XHProf and Xdebug profiler traces
#    - files:/mnt/files

  crond:
    init: true
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_crond"
    environment:
      CRONTAB: "0 * * * * drush -r /var/www/html/web cron"
    command: sudo -E crond -f -d 0
    volumes:
    - ./:/var/www/html:cached
## Alternative for macOS users: Mutagen https://wodby.com/docs/stacks/drupal/local#docker-for-mac
#    - drupal:/var/www/html

  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:cached
## Alternative for macOS users: Mutagen https://wodby.com/docs/stacks/drupal/local#docker-for-mac
#    - drupal:/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}`)"

#  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
#      POSTGRES_DB_EXTENSIONS: pg_trgm
#    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:cached
## Alternative for macOS users: Mutagen https://wodby.com/docs/stacks/drupal/local#docker-for-mac
#    - drupal:/var/www/html

#    labels:
#    - "traefik.http.routers.${PROJECT_NAME}_apache.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_ALLOW_UNRESTRICTED_PURGE: 1
#    labels:
#    - "traefik.http.services.${PROJECT_NAME}_varnish.loadbalancer.server.port=6081"
#    - "traefik.http.routers.${PROJECT_NAME}_varnish.rule=Host(`varnish.${PROJECT_BASE_URL}`)"

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

#  adminer:
#    container_name: "${PROJECT_NAME}_adminer"
#    init: true
#    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.http.routers.${PROJECT_NAME}_adminer.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
#      UPLOAD_LIMIT: 1G
#    labels:
#    - "traefik.http.routers.${PROJECT_NAME}_pma.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
#      ZK_HOST: zookeeper:2181
#      SOLR_HEAP: 1024m
#    depends_on:
#    - zookeeper
#    labels:
#    - "traefik.http.services.${PROJECT_NAME}_solr.loadbalancer.server.port=8983"
#    - "traefik.http.routers.${PROJECT_NAME}_solr.rule=Host(`solr.${PROJECT_BASE_URL}`)"

#  zookeeper:
#    image: zookeeper:$ZOOKEEPER_TAG
#    container_name: "${PROJECT_NAME}_zookeeper"
#    environment:
#      ZOO_MY_ID: 1
#      ZOO_SERVERS: server.1=zookeeper:2888:3888;2181
#      ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok

#  drupal-node:
#    image: wodby/drupal-node:$DRUPAL_NODE_TAG
#    container_name: "${PROJECT_NAME}_drupal_nodejs"
#    labels:
#    - "traefik.http.routers.${PROJECT_NAME}_drupal_node.rule=Host(`drupal_node.${PROJECT_BASE_URL}`)"
#    environment:
#      NODE_SERVICE_KEY: node-service-key

#  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.http.services.${PROJECT_NAME}_node.loadbalancer.server.port=3000"
#    - "traefik.http.routers.${PROJECT_NAME}_node.rule=Host(`node.${PROJECT_BASE_URL}`)"
#    expose:
#    - "3000"
#    volumes:
#    - ./:/var/www/html
#    command: sh -c 'yarn install && yarn run start'

#  webgrind:
#    image: wodby/webgrind:$WEBGRIND_TAG
#    container_name: "${PROJECT_NAME}_webgrind"
#    environment:
#      WEBGRIND_PROFILER_DIR: /mnt/files/xdebug
#    labels:
#    - "traefik.http.routers.${PROJECT_NAME}_webgrind.rule=Host(`webgrind.${PROJECT_BASE_URL}`)"
#    volumes:
#    - files:/mnt/files
#    - ./:/mnt/codebase:cached

#  elasticsearch:
#    image: wodby/elasticsearch:$ELASTICSEARCH_TAG
#    container_name: "${PROJECT_NAME}_elasticsearch"
#    environment:
#      ES_JAVA_OPTS: "-Xms500m -Xmx500m"
#    ulimits:
#      memlock:
#        soft: -1
#        hard: -1

#  kibana:
#    image: wodby/kibana:$KIBANA_TAG
#    container_name: "${PROJECT_NAME}_kibana"
#    depends_on:
#    - elasticsearch
#    labels:
#    - "traefik.http.services.${PROJECT_NAME}_kibana.loadbalancer.server.port=5601"
#    - "traefik.http.routers.${PROJECT_NAME}_kibana.rule=Host(`kibana.${PROJECT_BASE_URL}`)"

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

#  xhprof:
#    image: wodby/xhprof:$XHPROF_TAG
#    container_name: "${PROJECT_NAME}_xhprof"
#    restart: always
#    volumes:
#    - files:/mnt/files
#    labels:
#    - "traefik.http.routers.${PROJECT_NAME}_xhprof.rule=Host(`xhprof.${PROJECT_BASE_URL}`)"

#  chrome:
#    image: selenium/standalone-chrome:$SELENIUM_CHROME_TAG
#    container_name: "${PROJECT_NAME}_chrome"
#    volumes:
#    - /dev/shm:/dev/shm
#    entrypoint:
#    - chromedriver
#    - "--no-sandbox"
#    - "--disable-dev-shm-usage"
#    - "--log-path=/tmp/chromedriver.log"
#    - "--verbose"
#    - "--whitelisted-ips="

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

#x-mutagen:
#  sync:
#    defaults:
#      ignore:
#        vcs: true
#        paths:
#        - .DS_Store
#        - .history
#        - .idea
#    drupal:
#      alpha: "."
#      beta: "volume://drupal"
#      configurationBeta:
#        permissions:
#          defaultFileMode: 0644
#          defaultDirectoryMode: 0755
#          defaultOwner: "id:501"
#          defaultGroup: "id:20"

volumes:
## For macOS users (Mutagen)
#  drupal:
# For Xdebug profiler
  files:

Contents of your .env

### Documentation available at https://wodby.com/docs/stacks/drupal/local
### Changelog can be found at https://github.com/wodby/docker4drupal/releases
### Images tags format explained at https://github.com/wodby/docker4drupal#images-tags

### PROJECT SETTINGS

PROJECT_NAME=drupaldeafault_project
PROJECT_BASE_URL=drupal.docker.localhost
PROJECT_PORT=8200

DB_NAME=dfd
DB_USER=root
DB_PASSWORD=root
DB_ROOT_PASSWORD=root
DB_HOST=localhost
DB_PORT=3306
DB_DRIVER=mysql

### --- MARIADB ----

MARIADB_TAG=10.11-3.26.4
#MARIADB_TAG=11.0-3.26.4
#MARIADB_TAG=10.10-3.26.4
#MARIADB_TAG=10.9-3.26.4
#MARIADB_TAG=10.6-3.26.4
#MARIADB_TAG=10.5-3.26.4
#MARIADB_TAG=10.4-3.26.4

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

DRUPAL_TAG=10-4.58.7
#DRUPAL_TAG=9-4.58.7
#DRUPAL_TAG=7-4.58.7

### --- PHP ----

# Linux (uid 1000 gid 1000)

PHP_TAG=8.2-dev-4.47.5
#PHP_TAG=8.1-dev-4.47.5
#PHP_TAG=8.0-dev-4.47.5

# macOS (uid 501 gid 20)

#PHP_TAG=8.2-dev-macos-4.47.5
#PHP_TAG=8.1-dev-macos-4.47.5
#PHP_TAG=8.0-dev-macos-4.47.5

### --- NGINX ----

NGINX_TAG=1.25-5.33.5
#NGINX_TAG=1.24-5.33.5
#NGINX_TAG=1.25-5.33.5

NGINX_VHOST_PRESET=drupal10
#NGINX_VHOST_PRESET=drupal9
#NGINX_VHOST_PRESET=drupal8
#NGINX_VHOST_PRESET=drupal7

### --- SOLR ---

SOLR_TAG=8-4.18.2
#SOLR_TAG=7-4.18.2
#SOLR_TAG=6-4.18.2
#SOLR_TAG=5-4.18.2

SOLR_CONFIG_SET="search_api_solr_4.1.6"
#SOLR_CONFIG_SET="search_api_solr_4.0.1"
#SOLR_CONFIG_SET="search_api_solr_8.x-3.9"
#SOLR_CONFIG_SET="search_api_solr_8.x-3.2"
#SOLR_CONFIG_SET="search_api_solr_8.x-2.7"
#SOLR_CONFIG_SET="search_api_solr_8.x-1.2"
#SOLR_CONFIG_SET="search_api_solr_7.x-1.14"

### --- ELASTICSEARCH ---

ELASTICSEARCH_TAG=7-5.18.11
#ELASTICSEARCH_TAG=6-5.18.11

### --- KIBANA ---

KIBANA_TAG=7-5.18.11
#KIBANA_TAG=6-5.18.11

### --- REDIS ---

REDIS_TAG=7-4.2.1
#REDIS_TAG=6-4.2.1
#REDIS_TAG=5-4.2.1

### --- NODE ---

NODE_TAG=20-dev-1.26.0
#NODE_TAG=18-dev-1.26.0

### --- VARNISH ---

VARNISH_TAG=6.0-4.15.0

### --- POSTGRESQL ----

POSTGRES_TAG=15-1.31.4
#POSTGRES_TAG=14-1.31.4
#POSTGRES_TAG=13-1.31.4
#POSTGRES_TAG=12-1.31.4
#POSTGRES_TAG=11-1.31.4

### OTHERS

ADMINER_TAG=4-3.24.4
APACHE_TAG=2.4-4.12.2
ATHENAPDF_TAG=2.16.0
DRUPAL_NODE_TAG=1.0-2.0.0
MEMCACHED_TAG=1-2.15.3
OPENSMTPD_TAG=6-1.18.3
RSYSLOG_TAG=latest
SELENIUM_CHROME_TAG=3.141
WEBGRIND_TAG=1-1.30.0
XHPROF_TAG=3.7.6
ZOOKEEPER_TAG=3.8

Logs output docker-compose logs

Paste here
csandanov commented 1 year ago

If you're starting from the scratch (without db import) make sure to specify mariadb as the host on the 4th step of Drupal installation (this area collapsed by default with localhost as the default value). I've just repeated all the actions on macOS and the installation has completed just fine (Drupal 10.1.5, Docker 24.0.2).

csandanov commented 1 year ago

created a local database on localhost

oh, I see, php in the container cannot access your host machine database, you can use something like host.docker.internal (macOS) to access the host from within the container or just use the mariadb from your docker-compose.yml file. Anyway, using the host machine database is not a use case covered by docker4drupal