Skip to content

skilld-labs/skilld-docker-container

Repository files navigation

Skilld docker container


Overview

Skilld docker container is a developer starterkit for your Drupal project.

What is this?

  • This is a developer starterkit which can be used for local drupal development or/and integration into your CI/CD processes.

What is this not?

Quickstart

  • Install docker for Linux, Mac, Windows

  • Install Docker Compose V2 version 2.0 or later

  • Copy .env.default to .env, more information about enviroment file can be found docs.docker.com

  • Copy docker-compose.override.yml.default to docker-compose.override.yml, update parts you want to overwrite.

    • docker-compose.yml contains the base requirements of a working Drupal site. It should not be updated.
  • Update .gitlab-ci.yml variables section THEME_PATH to make front gitlab CI works.

  • Run make all

Used variables

Variable name Description Default value
COMPOSE_FILE Path to a Compose file(s) ./docker/docker-compose.yml:./docker/docker-compose.override.yml
COMPOSE_PROJECT_NAME Your project name -
PROFILE_NAME Profile used for site install druxxy
MODULES Additional modules to enable after site install project_default_content
THEME_NAME Name of theme directory in /web/themes NA
SITE_NAME Site name Example
SITE_MAIL Site e-mail address [email protected]
ADMIN_NAME Admin username admin
PROJECT_INSTALL Way to install site - from straight or existing config -
IMAGE_PHP Php image to use skilldlabs/php:83-unit
IMAGE_NGINX Image to use for nginx container skilldlabs/nginx:1.24
IMAGE_APACHE Image to use for apache container skilldlabs/skilld-docker-apache
IMAGE_FRONT Image to use for front tasks skilldlabs/frontend:zen
IMAGE_DRIVER Image to use for automated testing webdriver zenika/alpine-chrome
ADD_PHP_EXT Additional php extension to install -
MAIN_DOMAIN_NAME Domain name used for traefik docker.localhost
DB_URL Url to connect to database sqlite:///dev/shm/db.sqlite
DB_DATA_DIR Full path to database storage /dev/shm
CLEAR_FRONT_PACKAGES Set it to no to keep /node_nodules directory in theme after make front task to save build time. yes
RA_BASIC_AUTH username:hashed-password format defining BasicAuth in Traefik. Password hashed using htpasswd -nibB username password! as described here -

Persistent Mysql

  • By default sqlite storage used, which is created inside php container, if you need persistent data to be saved:
    • Update docker-compose.override.yml, set
    php:
       depends_on:
         - mysql
    and update mysql container part
    mysql:
      image: mysql:8.0-oraclelinux8
    ...
    • Update .env file, and set DB_URL=mysql://db:db@mysql/db

Network

  • Every time project built, it take new available IP address, if you want to have persistent IP, uncomment lines from docker-compose.override.yml
networks:
  front:
    driver: bridge
    ipam:
      driver: default
      config:
        - subnet: "172.18.0.5"

Usage

  • make - Show this info.
  • make all - Full project install from the scratch.
  • make clean - Totally remove project build folder, files, docker containers and network.
  • make si - Install/reinstall site.
  • make info - Show project services IP addresses.
  • make diff - Show changes in overrides (needs local diff command).
  • make exec - docker exec into php container.
  • make exec0 - docker exec into php container as root.
  • make dev - Devel + kint setup, and config for Twig debug mode, disable aggregation.
  • make drush [command] - execute drush command.
  • make phpcs - Check codebase with phpcs sniffers to make sure it conforms https://www.drupal.org/docs/develop/standards.
  • make phpcbf - Fix codebase according to Drupal standards https://www.drupal.org/docs/develop/standards.
  • make front - Builds frontend tasks.
  • make lint - Runs frontend linters.
  • make storybook - Runs storybook in current theme.
  • make blackfire - Adds and enables blackfire.io php extension, needs configuration in docker-compose.override.yml.
  • make newrelic - Adds and enables newrelic.com php extension, needs configuration NEW_RELIC_LICENSE_KEY environment variable defined with valid license key.
  • make xdebug (on|off|status) - Enable, disable or report status of Xdebug PHP extension.

Additional goals

  • If you need to add your custom/specific project goal, create new file in scripts/makefile/myfile.mk and describe goal inside. Example can be found at scripts/makefile/backup.mk

Support

Drush commands

  • You can run any drush command make drush [command -- -argument]

Troubleshooting

  • Use our issue queue, which is public, to search or add new issues.

Git hooks

  • Project includes git hooks to perform automatic validation when certain git commands are executed
  • You can bypass this validation with option --no-verify

License

This project is licensed under the MIT open source license.