Skip to content

Instantly share code, notes, and snippets.

@woutersf
Last active July 19, 2021 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save woutersf/78daec26b98b513de1d0027178815b3d to your computer and use it in GitHub Desktop.
Save woutersf/78daec26b98b513de1d0027178815b3d to your computer and use it in GitHub Desktop.
Docker compose for Mautic / Drupal (apache) / n8n (enterprise integration)
version: '3.5'
services:
apache:
depends_on:
- db
image: registry.gitlab.com/dropsolid/containers/dropsolid_apache:1-${PHP_VERSION}
environment:
- DOCKER_NETWORK=${COMPOSE_PROJECT_NAME}-docker
- PHP_IDE_CONFIG=serverName=${COMPOSE_PROJECT_NAME}.docker.localhost
- DLP_UID=${DLP_UID}
- DLP_GID=${DLP_GID}
- APACHE_DOCUMENT_ROOT=/var/www/html/docroot
networks:
default:
# an alias is necessary, as the default network name docker-compose creates contains underscores,
# and Apache doesn't support that.
# see https://github.com/docker/compose/issues/229
aliases:
- apache-${COMPOSE_PROJECT_NAME}
traefik:
volumes:
- ./docroot:/var/www/html/docroot:cached
- ./vendor:/var/www/html/vendor:cached
- ./etc:/var/www/html/etc:cached
- ./etc/drush/${COMPOSE_PROJECT_NAME}.aliases.drushrc.php:/var/www/html/docroot/sites/default/${COMPOSE_PROJECT_NAME}.aliases.drushrc.php:cached
- ./etc/drupal/.htaccess:/var/www/html/docroot/.htaccess:cached
- ./config:/var/www/html/config:cached
labels:
- "traefik.docker.network=traefik"
- "traefik.frontend.rule=HostRegexp:${COMPOSE_PROJECT_NAME}.docker.localhost,{subdomain:[a-z]+}.${COMPOSE_PROJECT_NAME}.docker.localhost,${COMPOSE_PROJECT_NAME}.docker.localhost.192.168.1.114.xip.io,{subdomain:[a-z]+}.${COMPOSE_PROJECT_NAME}.docker.localhost.192.168.1.114.xip.io"
- "traefik.enable=true"
- "traefik.port=80"
db:
image: mysql:5.7
command:
- --max_allowed_packet=67108864
- --innodb_use_native_aio=0
volumes:
- ./.docker-data/db:/var/lib/mysql:delegated
user: ${DLP_UID}:${DLP_GID}
environment:
MYSQL_ROOT_PASSWORD: toor
MYSQL_DATABASE: ${COMPOSE_PROJECT_NAME}_local
MYSQL_USER: ${COMPOSE_PROJECT_NAME}
MYSQL_PASSWORD: ${COMPOSE_PROJECT_NAME}_password
networks:
- default
ports:
- "127.0.0.1::3306"
n8n:
image: n8nio/n8n
restart: always
domainname: n8n
container_name: n8n
ports:
- "127.0.0.1:5678:5678"
networks:
- default
- traefik
labels:
- traefik.enable=true
- "traefik.port=5678"
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER
- N8N_BASIC_AUTH_PASSWORD
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_TUNNEL_URL=http://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
volumes:
- ${DATA_FOLDER}/.n8n:/home/node/.n8n
#links:
# - "mautic:floristacoddmmerce.docker.localhost"
mauticdb:
image: percona/percona-server:5.7
container_name: mauticdb
volumes:
- mysql_data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=mysecret
command:
--character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
networks:
- default
mautic:
image: mautic/mautic:latest
container_name: mautic
domainname: mautic
links:
- mauticdb:mysql
depends_on:
- mauticdb
ports:
- 8080:80
networks:
- default
- traefik
volumes:
- mautic_data:/var/www/html
environment:
- MAUTIC_DB_HOST=mauticdb
- MYSQL_PORT_3306_TCP=3306
- MAUTIC_DB_USER=root
- MAUTIC_DB_PASSWORD=mysecret
- MAUTIC_DB_NAME=mautic
- MAUTIC_RUN_CRON_JOBS=true
labels:
- "traefik.docker.network=traefik"
- "traefik.enable=true"
- "traefik.port=8080"
- "traefik.frontend.priority=1000"
- traefik.http.routers.n8n.rule=Host(`mautic`)
networks:
default:
name: ${COMPOSE_PROJECT_NAME}-docker
traefik:
external:
name: traefik
volumes:
mysql_data:
driver: local
mautic_data:
driver: local
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment