docker4drupal icon indicating copy to clipboard operation
docker4drupal copied to clipboard

Can't support network_mode configuration with nginx and apache

Open keopx opened this issue 4 years ago • 1 comments

Describe the bug I am using a custom network to work one traefik for all different proyects.

I have the same problem with Apache and Nginx

Output of docker info

Client:
 Debug Mode: false

Server:
 Containers: 5
  Running: 4
  Paused: 0
  Stopped: 1
 Images: 5
 Server Version: 19.03.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
 runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.3.0-0.bpo.2-amd64
 Operating System: Debian GNU/Linux 10 (buster)
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 31.09GiB
 Name: thor
 ID: 5WOS:6FUN:AGCY:67EZ:5CKC:OP7A:FNQK:INTH:B4QL:IKGU:CTEL:VUQW
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Username: keopx
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: No swap limit support

Contents of your docker-compose.yml

version: "3"

services:
  mariadb:
    image: wodby/mariadb:$MARIADB_TAG
    container_name: "${PROJECT_NAME}_mariadb"
    network_mode: traefik_default
    stop_grace_period: 30s
    environment:
      MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
      MYSQL_DATABASE: $DB_NAME
      MYSQL_USER: $DB_USER
      MYSQL_PASSWORD: $DB_PASSWORD

  php:
    image: wodby/drupal-php:$PHP_TAG
    container_name: "${PROJECT_NAME}_php"
    network_mode: traefik_default
    environment:
      PHP_SENDMAIL_PATH: /usr/sbin/sendmail -t -i -S mailhog:1025
      DB_HOST: $DB_HOST
      DB_PORT: $DB_PORT
      DB_USER: $DB_USER
      DB_PASSWORD: $DB_PASSWORD
      DB_NAME: $DB_NAME
      DB_DRIVER: $DB_DRIVER
      PROJECT_NAME: ${PROJECT_NAME}
      PHP_FPM_USER: wodby
      PHP_FPM_GROUP: wodby
      COLUMNS: 80 # Set 80 columns for docker exec -it.

    volumes:
      - ./:/var/www/html
  nginx:
    image: wodby/nginx:$NGINX_TAG
    container_name: "${PROJECT_NAME}_nginx"
    network_mode: traefik_default
    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
    labels:
      - "traefik.http.routers.${PROJECT_NAME}_nginx.rule=Host(`${PROJECT_BASE_URL}`)"
  portainer:
    image: portainer/portainer
    container_name: "${PROJECT_NAME}_portainer"
    network_mode: traefik_default
    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}`)"

Contents of your .env

### PROJECT SETTINGS

PROJECT_NAME=drupalsolr
PROJECT_BASE_URL=drupalsolr.docker.localhost

DB_NAME=drupal
DB_USER=drupal
DB_PASSWORD=drupal
DB_ROOT_PASSWORD=password
DB_HOST=mariadb
DB_PORT=3306
DB_DRIVER=mysql
DB_PORT=3306

### --- MARIADB ----

MARIADB_TAG=10.4-3.7.6

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

DRUPAL_TAG=8-4.17.1

### --- PHP ----

# Linux (uid 1000 gid 1000)

PHP_TAG=7.3-dev-4.15.0

### --- NGINX ----

NGINX_TAG=1.17-5.8.5

NGINX_VHOST_PRESET=drupal8

### OTHERS

ADMINER_TAG=4-3.9.2
APACHE_TAG=2.4-4.2.3
ATHENAPDF_TAG=2.10.0
DRUPAL_NODE_TAG=1.0-2.0.0
MEMCACHED_TAG=1-2.4.1
OPENSMTPD_TAG=6.0-1.6.3
RSYSLOG_TAG=latest
SELENIUM_CHROME_TAG=3.141
WEBGRIND_TAG=1-1.14.1
XHPROF_TAG=2.1.1

Create custom traefik_default network

docker network create -d bridge traefik_default --attachable
 docker run --rm -d -p 80:80 -p 443:443 -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock --network traefik_default --name main_traefik traefik:v2.0 --api.insecure=true --providers.docker

Logs output docker-compose logs Nginx error:

drupalsolr_nginx | nginx: [emerg] host not found in upstream "php:9000" in /etc/nginx/upstream.conf:2
drupalsolr_mariadb | Initializing database
drupalsolr_nginx exited with code 1

Apache error:

AH00898: DNS lookup failure for: php returned by

keopx avatar Feb 08 '20 14:02 keopx

It works changing this line

From: NGINX_BACKEND_HOST: php

To: NGINX_BACKEND_HOST: "${PROJECT_NAME}_php"

keopx avatar Feb 10 '20 07:02 keopx