diff --git a/.gitignore b/.gitignore index f295ef4..612a019 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ data/job-archive data/job-archive/** -data/symfony -data/symfony/** data/influxdb data/sqldata data/cc-metric-store +.vscode diff --git a/README.md b/README.md index ba12b9e..6eebecb 100644 --- a/README.md +++ b/README.md @@ -1,86 +1,50 @@ # cc-docker -This is a `docker compose` setup to try out the complete ClusterCockpit Application Stack including all external components. This docker setup can be easily configured to be used as demo or as a development environment. -For a docker setup targeted to server environment you may have a look at https://github.com/ClusterCockpit/cc-docker-server . +**Please note: This repo is under ongoing construction** + +This is a `docker-compose` setup which provides a quickly started environment for ClusterCockpit development and testing, using the modules `cc-backend` (GoLang) and `cc-frontend` (Svelte). A number of services is readily available as docker container (nats, cc-metric-store, InfluxDB, LDAP), or easily added by manual configuration (MySQL). It includes the following containers: -* mysql -* php-fpm -* nginx -* redis -* openldap -* influxdb -* phpmyadmin +* nats (Default) +* cc-metric-store (Default) +* influxdb (Optional) +* openldap (Default) +* mysql (Optional, Manual) +* phpmyadmin (Optional, Manual) -Settings are configured in `.env`. -The setup comes with fixture data for a Job archive, InfluxDB, MySQL, and a LDAP user directory. +The setup comes with fixture data for a Job archive, cc-metric-store checkpoints, InfluxDB, MySQL, and a LDAP user directory. ## Known Issues * `docker-compose` installed on Ubuntu (18.04, 20.04) via `apt-get` can not correctly parse `docker-compose.yml` due to version differences. Install latest version of `docker-compose` from https://docs.docker.com/compose/install/ instead. -* You need to ensure that no other web server is running on port 80 (e.g. Apache2). If port 80 is already in use, edit NGINX_PORT environment variable in `.env`. +* You need to ensure that no other web server is running on ports 8080 (cc-backend), 8081 (phpmyadmin), 8084 (cc-metric-store), 8086 (nfluxDB), 4222 and 8222 (Nats), or 3306 (MySQL). If one or more ports are already in use, you habe to adapt the related config accordingly. * Existing VPN connections sometimes cause problems with docker. If `docker-compose` does not start up correctly, try disabling any active VPN connection. Refer to https://stackoverflow.com/questions/45692255/how-make-openvpn-work-with-docker for further information. -## Configuration +## Configuration Templates -While many aspects of this docker compose setup can be configured you usually only need to adapt the following three settings in `.env`: -* `CLUSTERCOCKPIT_BRANCH` (Default: `develop`): The branch to checkout from ClusterCockpit git repository. May also be a tag. -* `APP_CLUSTERCOCKPIT_INIT` (Default: true): Wether the Symfony tree (located at `./data/symfony`) should be deleted and freshly cloned and initialized on every container startup. -* `APP_ENVIRONMENT` (Default: `dev`): The Symfony app environment. With `dev` you get the symfony debug toolbar and more extensive error handling. The `prod` environment is a setup for productions use. +Located in `./templates` +* `docker-compose.yml.ccms`: Docker-Compose file to setup cc-metric-store metric database and LDAP containers (Default). Used in `setupDev.sh`. +* `docker-compose.yml.influxdb`: Docker-Compose file to setup influxDB metric database and LDAP containers. Used in `setupDev.sh`. +* `docker-compose.yml.mysql`: Docker-Compose configuration template if additional MySQL and phpmyadmin containers are desired. +* `env.ccms`: Environment variables for setup with cc-metric-store metric database and LDAP containers (Default). Used in `setupDev.sh`. +* `env.influxdb`: Environment variables for setup with influxDB metric database and LDAP containers. Used in `setupDev.sh`. +* `env.mysql`: Additional environment variables required if additional MySQL and phpmyadmin containers are desired. ## Setup -* `$ cd data` -* `$ ./init.sh`: **NOTICE** The script will download files of a total size of 338MB (mostly for the InfluxDB data). +1. `$ ./setupDev.sh [help|ccms|influxdb]`: **NOTICE** The script will download files of a total size of 338MB (mostly for the InfluxDB data). + * `help`: Displays help. + * `ccms`: Copies according docker-compose.yml and env-file to root directory, downloads cc-metric-store checkpoint data, and builds containers. + * `influxdb`: Copies according docker-compose.yml and env-file to root directory, downloads influxDB data, and builds containers. -If you want to test the REST API and also write to the job archive from Cluster Cockpit you have to comment out the following lines in `./data/init.sh`: -``` -echo "This script needs to chown the job-archive directory so that the application can write to it:" -sudo chown -R 82:82 ./job-archive -``` +2. After that from the root of the cc-docker sandbox you can start up the containers and launch cc-backend with: `$ ./startDev.sh` -After that from the root of the cc-docker sandbox you can start up the containers with: -* `$ docker-compose up` -* Wait... and wait a little longer - -Before you can use ClusterCockpit the following disclaimer must be shown. To download and build all ClusterCockpit components may take up to several minutes: -``` --------------------- --------------------------------- - Symfony - -------------------- --------------------------------- - Version 5.3.7 - Long-Term Support No - End of maintenance 01/2022 (in +140 days) - End of life 01/2022 (in +140 days) - -------------------- --------------------------------- - Kernel - -------------------- --------------------------------- - Type App\Kernel - Environment dev - Debug true - Charset UTF-8 - Cache directory ./var/cache/dev (6.5 MiB) - Build directory ./var/cache/dev (6.5 MiB) - Log directory ./var/log (249 B) - -------------------- --------------------------------- - PHP - -------------------- --------------------------------- - Version 8.0.10 - Architecture 64 bits - Intl locale n/a - Timezone UTC (2021-09-13T09:41:33+00:00) - OPcache true - APCu false - Xdebug false - -------------------- --------------------------------- - ``` - -By default, you can access ClusterCockpit in your browser at `http://localhost`. If the `NGINX_PORT` environment variable was changed, you have to use `http://localhost:$PORT` . You can shutdown the containers by pressing `CTRL-C`. Refer to the common docker documentation how to start the environment in the background. +3. By default, you can access cc-backend in your browser at `http://localhost:8080`. You can shut down the cc-backend server by pressing `CTRL-C`, remember to also shut down all containers via `docker-compose down` afterwards. ## Usage -Credentials for the preconfigured admin user are: -* User: `admin` +Credentials for the preconfigured demo user are: +* User: `demo` * Password: `AdminDev` You can also login as regular user using any credential in the LDAP user directory at `./data/ldap/users.ldif`. diff --git a/cc-metric-store/config.json b/cc-metric-store/config.json index b1de1ab..674c67c 100644 --- a/cc-metric-store/config.json +++ b/cc-metric-store/config.json @@ -26,4 +26,3 @@ "nats": "nats://cc-nats:4222", "jwt-public-key": "kzfYrYy+TzpanWZHJ5qSdMj5uKUWgq74BWhQG6copP0=" } - diff --git a/data/init.sh b/data/init.sh deleted file mode 100755 index 923111d..0000000 --- a/data/init.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash - -if [ -d influxdb ]; then - echo "Data already initialized!" - echo -n "Perform a fresh initialisation? [yes to proceed / no to exit] " - read -r answer - if [ "$answer" == "yes" ]; then - echo "Cleaning directories ..." - rm -rf job-archive - rm -rf influxdb/data/* - rm -rf sqldata/* - echo "done." - else - echo "Aborting ..." - exit - fi -fi - -# Download example job job-archive -wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/job-archive.tar.xz -tar xJf job-archive.tar.xz -rm ./job-archive.tar.xz - -# Download data for influxdb2 -mkdir -p influxdb/data -wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/influxdbv2-data.tar.xz -cd influxdb/data -tar xJf ../../influxdbv2-data.tar.xz -rm ../../influxdbv2-data.tar.xz -cd ../.. - -# Download checkpoint files for cc-metric-store -mkdir -p cc-metric-store/checkpoints -mkdir -p cc-metric-store/archive -cd cc-metric-store/checkpoints -wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/cc-metric-store-checkpoints.tar.xz -tar xf cc-metric-store-checkpoints.tar.xz -rm cc-metric-store-checkpoints.tar.xz -cd ../.. diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 146f0e8..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,76 +0,0 @@ -services: - nats: - container_name: cc-nats - image: nats:alpine - ports: - - "4222:4222" - - "8222:8222" - - cc-metric-store: - container_name: cc-metric-store - build: - context: ./cc-metric-store - ports: - - "8081:8081" - volumes: - - ${DATADIR}/cc-metric-store:/data - depends_on: - - nats - - db: - container_name: cc-db - image: mysql:8.0.22 - command: ["--default-authentication-plugin=mysql_native_password"] - environment: - MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE: ${MYSQL_DATABASE} - MYSQL_USER: ${MYSQL_USER} - MYSQL_PASSWORD: ${MYSQL_PASSWORD} - ports: - - "127.0.0.1:3336:3306" - volumes: - - ${DATADIR}/sql-init:/docker-entrypoint-initdb.d - # - ${DATADIR}/sqldata:/var/lib/mysql - cap_add: - - SYS_NICE - - phpmyadmin: - container_name: cc-phpmyadmin - image: phpmyadmin - environment: - - PMA_HOST=cc-db - - PMA_USER=root - - PMA_PASSWORD=${MYSQL_ROOT_PASSWORD} - ports: - - "127.0.0.1:${PHPMYADMIN_PORT}:80" - depends_on: - - db - - influxdb: - container_name: cc-influxdb - image: influxdb - command: ["--reporting-disabled"] - environment: - DOCKER_INFLUXDB_INIT_MODE: setup - DOCKER_INFLUXDB_INIT_USERNAME: symfony - DOCKER_INFLUXDB_INIT_PASSWORD: ${INFLUXDB_PASSWORD} - DOCKER_INFLUXDB_INIT_ORG: ${INFLUXDB_ORG} - DOCKER_INFLUXDB_INIT_BUCKET: ${INFLUXDB_BUCKET} - DOCKER_INFLUXDB_INIT_RETENTION: 100w - DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${INFLUXDB_ADMIN_TOKEN} - ports: - - "127.0.0.1:${INFLUXDB_PORT}:8086" - volumes: - - ${DATADIR}/influxdb/data:/var/lib/influxdb2 - - ${DATADIR}/influxdb/config:/etc/influxdb2 - - openldap: - container_name: cc-ldap - image: osixia/openldap:1.5.0 - command: --copy-service --loglevel debug - environment: - - LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD} - - LDAP_ORGANISATION=${LDAP_ORGANISATION} - - LDAP_DOMAIN=${LDAP_DOMAIN} - volumes: - - ${DATADIR}/ldap:/container/service/slapd/assets/config/bootstrap/ldif/custom diff --git a/setupDev.sh b/setupDev.sh new file mode 100755 index 0000000..fbf4dc9 --- /dev/null +++ b/setupDev.sh @@ -0,0 +1,155 @@ +#!/bin/bash + +if [ -z "$1" ]; then + echo "No argument supplied. Use 'help', 'ccms' (Default), or 'influxdb'." + exit +elif [ "$1" == "help" ]; then + echo "Script to setup cc-backend devel environment. Use 'help', 'ccms' (Default), or 'influxdb' as argument." + echo "'help' : This help." + echo "'ccms' : Setup cc-metric-store example data and build docker container." + echo "'influxdb' : Setup influxdb example data and build docker container. Requires additional configuration afterwards." + exit +else + echo "Starting setup for '$1' ..." +fi + +# Download data for influxdb2 +if [ "$1" == "influxdb" ]; then + if [ ! -d data/influxdb ]; then + mkdir -p data/influxdb/data + cd data/influxdb/data + wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/influxdbv2-data.tar.xz + tar xJf influxdbv2-data.tar.xz + rm influxdbv2-data.tar.xz + cd ../../../ + else + echo "'data/influxdb' already exists!" + echo -n "Remove existing folder and redownload? [yes to redownload / no to continue] " + read -r answer + if [ "$answer" == "yes" ]; then + echo "Removing 'data/influxdb' ..." + rm -rf data/influxdb + echo "Reinstall 'data/influxdb'..." + mkdir -p data/influxdb/data + cd data/influxdb/data + wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/influxdbv2-data.tar.xz + tar xJf influxdbv2-data.tar.xz + rm influxdbv2-data.tar.xz + cd ../../../ + echo "done." + else + echo "'data/influxdb' unchanged." + fi + fi +fi + +# Download checkpoint files for cc-metric-store +if [ "$1" == "ccms" ]; then + if [ ! -d data/cc-metric-store ]; then + mkdir -p data/cc-metric-store/checkpoints + mkdir -p data/cc-metric-store/archive + cd data/cc-metric-store/checkpoints + wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/cc-metric-store-checkpoints.tar.xz + tar xf cc-metric-store-checkpoints.tar.xz + rm cc-metric-store-checkpoints.tar.xz + cd ../../../ + else + echo "'data/cc-metric-store' already exists!" + echo -n "Remove existing folder and redownload? [yes to redownload / no to continue] " + read -r answer + if [ "$answer" == "yes" ]; then + echo "Removing 'data/cc-metric-store' ..." + rm -rf data/cc-metric-store + echo "Reinstall 'data/cc-metric-store'..." + mkdir -p data/cc-metric-store/checkpoints + mkdir -p data/cc-metric-store/archive + cd data/cc-metric-store/checkpoints + wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/cc-metric-store-checkpoints.tar.xz + tar xf cc-metric-store-checkpoints.tar.xz + rm cc-metric-store-checkpoints.tar.xz + cd ../../../ + echo "done." + else + echo "'data/cc-metric-store' unchanged." + fi + fi +fi + +# Download && Setup cc-backend +if [ ! -d cc-backend ]; then + ## Get backend git [can use --recursive to load frontend via ssh directly] + git clone https://github.com/ClusterCockpit/cc-backend.git + cd cc-backend + ## Get frontend git [http variant] + cd frontend + ### Comment ths if --recursive + git clone https://github.com/ClusterCockpit/cc-frontend.git . + yarn install + yarn build + cd .. + ## Download Demo-Archive and prepare SQLite DB + mkdir ./var + cd ./var + wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/job-archive.tar.xz + tar xJf job-archive.tar.xz + rm ./job-archive.tar.xz + touch ./job.db + cd .. + ## Install backend + go get + go build + ## initialize job archive and SQLite + ./cc-backend --init-db --add-user demo:admin:AdminDev --no-server + cd .. +else + echo "'cc-backend' already exists!" + echo -n "Remove existing folder and reinstall? [yes to reinstall / no to continue] " + read -r answer + if [ "$answer" == "yes" ]; then + echo "Removing 'cc-backend' ..." + rm -rf cc-backend + echo "Reinstall 'cc-backend'..." + ## Get backend git [can use --recursive to load frontend via ssh directly] + git clone https://github.com/ClusterCockpit/cc-backend.git + cd cc-backend + ## Get frontend git [http variant] + cd frontend + ### Comment ths if --recursive + git clone https://github.com/ClusterCockpit/cc-frontend.git . + yarn install + yarn build + cd .. + ## Download Demo-Archive and prepare SQLite DB + mkdir ./var + cd ./var + wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/job-archive.tar.xz + tar xJf job-archive.tar.xz + rm ./job-archive.tar.xz + touch ./job.db + cd .. + ## Install backend + go get + go build + ## initialize job archive and SQLite + ./cc-backend --init-db --add-user demo:admin:AdminDev --no-server + cd .. + else + echo "'cc-backend' unchanged." + fi +fi + + +# Check dotenv-file and docker-compose-yml, copy accordingly if not present and build docker services +# !! By default, this decides which metric database is used based on the selected argument !! +if [ ! -d .env ]; then + cp templates/env.$1 ./.env +fi + +if [ ! -d docker-compose.yml ]; then + cp templates/docker-compose.yml.$1 ./docker-compose.yml +fi + +docker-compose build + +echo "" +echo "Setup complete. Use 'startDev.sh' to boot containers and start cc-backend." diff --git a/startDev.sh b/startDev.sh index 1009686..0af5804 100644 --- a/startDev.sh +++ b/startDev.sh @@ -1,20 +1,6 @@ -#!/bin/sh +#!/bin/bash -# mkdir ./var -# cd ./var -# -# wget https://hpc-mover.rrze.uni-erlangen.de/HPC-Data/0x7b58aefb/eig7ahyo6fo2bais0ephuf2aitohv1ai/job-archive.tar.xz -# tar xJf job-archive.tar.xz -# rm ./job-archive.tar.xz -# -# touch ./job.db -# cd ../frontend -# yarn install -# yarn build -# -# cd .. -# go get -# go build -# -# ./cc-backend --init-db --add-user demo:admin:AdminDev --no-server -# ./cc-backend +docker-compose up -d + +cd cc-backend +./cc-backend diff --git a/templates/docker-compose.yml.ccms b/templates/docker-compose.yml.ccms new file mode 100644 index 0000000..fb8c96e --- /dev/null +++ b/templates/docker-compose.yml.ccms @@ -0,0 +1,29 @@ +services: + nats: + container_name: cc-nats + image: nats:alpine + ports: + - "4222:4222" + - "8222:8222" + + cc-metric-store: + container_name: cc-metric-store + build: + context: ./cc-metric-store + ports: + - "8084:8084" + volumes: + - ${DATADIR}/cc-metric-store:/data + depends_on: + - nats + + openldap: + container_name: cc-ldap + image: osixia/openldap:1.5.0 + command: --copy-service --loglevel debug + environment: + - LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD} + - LDAP_ORGANISATION=${LDAP_ORGANISATION} + - LDAP_DOMAIN=${LDAP_DOMAIN} + volumes: + - ${DATADIR}/ldap:/container/service/slapd/assets/config/bootstrap/ldif/custom diff --git a/templates/docker-compose.yml.influxdb b/templates/docker-compose.yml.influxdb new file mode 100644 index 0000000..a71e5e1 --- /dev/null +++ b/templates/docker-compose.yml.influxdb @@ -0,0 +1,29 @@ +services: + influxdb: + container_name: cc-influxdb + image: influxdb + command: ["--reporting-disabled"] + environment: + DOCKER_INFLUXDB_INIT_MODE: setup + DOCKER_INFLUXDB_INIT_USERNAME: symfony + DOCKER_INFLUXDB_INIT_PASSWORD: ${INFLUXDB_PASSWORD} + DOCKER_INFLUXDB_INIT_ORG: ${INFLUXDB_ORG} + DOCKER_INFLUXDB_INIT_BUCKET: ${INFLUXDB_BUCKET} + DOCKER_INFLUXDB_INIT_RETENTION: 100w + DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${INFLUXDB_ADMIN_TOKEN} + ports: + - "127.0.0.1:${INFLUXDB_PORT}:8086" + volumes: + - ${DATADIR}/influxdb/data:/var/lib/influxdb2 + - ${DATADIR}/influxdb/config:/etc/influxdb2 + + openldap: + container_name: cc-ldap + image: osixia/openldap:1.5.0 + command: --copy-service --loglevel debug + environment: + - LDAP_ADMIN_PASSWORD=${LDAP_ADMIN_PASSWORD} + - LDAP_ORGANISATION=${LDAP_ORGANISATION} + - LDAP_DOMAIN=${LDAP_DOMAIN} + volumes: + - ${DATADIR}/ldap:/container/service/slapd/assets/config/bootstrap/ldif/custom diff --git a/templates/docker-compose.yml.mysql b/templates/docker-compose.yml.mysql new file mode 100644 index 0000000..3aa0fdd --- /dev/null +++ b/templates/docker-compose.yml.mysql @@ -0,0 +1,29 @@ +services: + db: + container_name: cc-db + image: mysql:8.0.22 + command: ["--default-authentication-plugin=mysql_native_password"] + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} + ports: + - "127.0.0.1:3336:3306" + volumes: + - ${DATADIR}/sql-init:/docker-entrypoint-initdb.d + # - ${DATADIR}/sqldata:/var/lib/mysql + cap_add: + - SYS_NICE + + phpmyadmin: + container_name: cc-phpmyadmin + image: phpmyadmin + environment: + - PMA_HOST=cc-db + - PMA_USER=root + - PMA_PASSWORD=${MYSQL_ROOT_PASSWORD} + ports: + - "127.0.0.1:${PHPMYADMIN_PORT}:80" + depends_on: + - db diff --git a/templates/env.ccms b/templates/env.ccms new file mode 100644 index 0000000..4b43034 --- /dev/null +++ b/templates/env.ccms @@ -0,0 +1,15 @@ +######################################################################## +# CCBACKEND DEVEL DOCKER SETTINGS FOR LDAP (CCMS-Devel) +######################################################################## + +######################################### +# LDAP +######################################################################## +LDAP_ADMIN_PASSWORD=mashup +LDAP_ORGANISATION=NHR@FAU +LDAP_DOMAIN=rrze.uni-erlangen.de + +######################################################################## +# INTERNAL SETTINGS +######################################################################## +DATADIR=./data diff --git a/.env b/templates/env.influxdb similarity index 65% rename from .env rename to templates/env.influxdb index bd4db0f..77ae2a5 100644 --- a/.env +++ b/templates/env.influxdb @@ -1,16 +1,7 @@ ######################################################################## -# CCBACKEND DEVEL DOCKER SETTINGS +# CCBACKEND DEVEL DOCKER SETTINGS FOR INFLUXDB AND LDAP ######################################################################## -######################################################################## -# MySQL -# The SQL port is not exposed outside the container -######################################################################## -MYSQL_ROOT_PASSWORD=root -MYSQL_DATABASE=ClusterCockpit -MYSQL_USER=symfony -MYSQL_PASSWORD=symfony - ######################################################################## # INFLUXDB ######################################################################## @@ -29,11 +20,6 @@ LDAP_ADMIN_PASSWORD=mashup LDAP_ORGANISATION=NHR@FAU LDAP_DOMAIN=rrze.uni-erlangen.de -######################################################################## -# PHPMyAdmin -######################################################################## -PHPMYADMIN_PORT=8080 - ######################################################################## # INTERNAL SETTINGS ######################################################################## diff --git a/templates/env.mysql b/templates/env.mysql new file mode 100644 index 0000000..0f87bc4 --- /dev/null +++ b/templates/env.mysql @@ -0,0 +1,17 @@ +######################################################################## +# ADDITIONAL ENV VARIABLES FOR MYSQL AND PHPMYADMIN CONTAINERS +######################################################################## + +######################################################################## +# MySQL +# The SQL port is not exposed outside the container +######################################################################## +MYSQL_ROOT_PASSWORD=root +MYSQL_DATABASE=ClusterCockpit +MYSQL_USER=symfony +MYSQL_PASSWORD=symfony + +######################################################################## +# PHPMyAdmin +######################################################################## +PHPMYADMIN_PORT=8081