From ca98ffccae2409020ca5c60ad1acee4c78baffb9 Mon Sep 17 00:00:00 2001 From: Riccardo Fiorenza Date: Mon, 3 May 2021 00:07:14 +0200 Subject: [PATCH 1/2] feat(.env): add docker-compose .env file to customize exposed ports and mysql parameters --- .env | 28 ++++++++++++++++++++++++++++ .gitignore | 1 + README.md | 4 ++++ docker-compose.yml | 18 +++++++++--------- 4 files changed, 42 insertions(+), 9 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 0000000..27333c2 --- /dev/null +++ b/.env @@ -0,0 +1,28 @@ +######################################################################## +# MySQL +######################################################################## +MYSQL_PORT=3306 +MYSQL_ROOT_PASSWORD=root +MYSQL_DATABASE=symfony +MYSQL_USER=symfony +MYSQL_PASSWORD=symfony + +######################################################################## +# PHP +######################################################################## +PHP_PORT=9000 + +######################################################################## +# NGINX +######################################################################## +NGINX_PORT=80 + +######################################################################## +# Elasticsearch +######################################################################## +ELASTICSEARCH_PORT=9200 + +######################################################################## +# Kibana +######################################################################## +KIBANA_PORT=81 diff --git a/.gitignore b/.gitignore index db2ad86..46a77e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /logs /symfony +/.env.* # IDE setting ## PhpStorm diff --git a/README.md b/README.md index 609dbc7..f6efb21 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,10 @@ nginx nginx Up 443/tc php-fpm php-fpm7 -F Up 0.0.0.0:9000->9001/tcp ``` +# Environment Customizations + +You can customize the exposed ports and other parameters changing the docker-compose .env file. + # Read logs You can access Nginx and Symfony application logs in the following directories on your host machine: diff --git a/docker-compose.yml b/docker-compose.yml index 711cf53..a39a12c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,12 +5,12 @@ services: image: mysql:8.0.22 command: ["--default-authentication-plugin=mysql_native_password"] ports: - - "3306:3306" + - "${MYSQL_PORT}:3306" environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: symfony - MYSQL_USER: symfony - MYSQL_PASSWORD: symfony + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${MYSQL_DATABASE} + MYSQL_USER: ${MYSQL_USER} + MYSQL_PASSWORD: ${MYSQL_PASSWORD} php: container_name: php-fpm @@ -20,7 +20,7 @@ services: ENABLE_PHP_XDEBUG: 0 SYMFONY_CLI_VERSION: 4.23.2 ports: - - "9000:9001" + - "${PHP_PORT}:9001" volumes: - ./symfony:/var/www/symfony:cached - ./logs/symfony:/var/www/symfony/var/log:cached @@ -31,7 +31,7 @@ services: container_name: nginx build: ./nginx ports: - - "80:80" + - "${NGINX_PORT}:80" depends_on: - php volumes: @@ -44,7 +44,7 @@ services: environment: discovery.type: "single-node" ports: - - "9200:9200" + - "${ELASTICSEARCH_PORT}:9200" logstash: container_name: logstash @@ -66,4 +66,4 @@ services: SERVER_NAME: localhost ELASTICSEARCH_HOSTS: http://elasticsearch:9200 ports: - - "81:5601" + - "${KIBANA_PORT}:5601" From ffca9262b728da90628d2d535bd07f67a5338039 Mon Sep 17 00:00:00 2001 From: Riccardo Fiorenza Date: Mon, 3 May 2021 00:14:45 +0200 Subject: [PATCH 2/2] feat(.env): add customizations for Xdebug configuration --- .env | 3 +++ docker-compose.yml | 4 +++- php-fpm/Dockerfile | 16 ++++++++++++---- php-fpm/xdebug.ini | 6 +++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/.env b/.env index 27333c2..e0a3aa2 100644 --- a/.env +++ b/.env @@ -11,6 +11,9 @@ MYSQL_PASSWORD=symfony # PHP ######################################################################## PHP_PORT=9000 +PHP_XDEBUG_MODE=off +PHP_XDEBUG_CLIENT_PORT=5902 +PHP_XDEBUG_CLIENT_HOST=host.docker.internal ######################################################################## # NGINX diff --git a/docker-compose.yml b/docker-compose.yml index a39a12c..ec788b5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -17,7 +17,9 @@ services: build: context: ./php-fpm args: - ENABLE_PHP_XDEBUG: 0 + PHP_XDEBUG_MODE: ${PHP_XDEBUG_MODE} + PHP_XDEBUG_CLIENT_PORT: ${PHP_XDEBUG_CLIENT_PORT} + PHP_XDEBUG_CLIENT_HOST: ${PHP_XDEBUG_CLIENT_HOST} SYMFONY_CLI_VERSION: 4.23.2 ports: - "${PHP_PORT}:9001" diff --git a/php-fpm/Dockerfile b/php-fpm/Dockerfile index b2211ec..e3bc43d 100644 --- a/php-fpm/Dockerfile +++ b/php-fpm/Dockerfile @@ -4,6 +4,7 @@ LABEL maintainer="Vincent Composieux " RUN apk add --no-cache \ coreutils \ + gettext \ php8-fpm \ php8-ctype \ php8-curl \ @@ -31,11 +32,19 @@ RUN apk add --no-cache \ make \ curl -# Allow to enable php8-xdebug -ARG ENABLE_PHP_XDEBUG -RUN if [[ "$ENABLE_PHP_XDEBUG" == "1" ]]; then \ +# Enable php8-xdebug if $PHP_XDEBUG_MODE is not empty +ARG PHP_XDEBUG_MODE=off +ARG PHP_XDEBUG_CLIENT_PORT=5902 +ARG PHP_XDEBUG_CLIENT_HOST=host.docker.internal +COPY xdebug.ini /etc/php8/conf.d/xdebug.ini.template +RUN if [[ "$PHP_XDEBUG_MODE" != "" ]]; then \ apk add --no-cache php8-pecl-xdebug; \ + export PHP_XDEBUG_MODE=$PHP_XDEBUG_MODE; \ + export PHP_XDEBUG_CLIENT_PORT=$PHP_XDEBUG_CLIENT_PORT; \ + export PHP_XDEBUG_CLIENT_HOST=$PHP_XDEBUG_CLIENT_HOST; \ + envsubst < /etc/php8/conf.d/xdebug.ini.template > /etc/php8/conf.d/xdebug.ini; \ fi +RUN rm -f /etc/php8/conf.d/xdebug.ini.template RUN curl -sS https://getcomposer.org/installer | tee composer-setup.php \ && php8 composer-setup.php && rm composer-setup.php* \ @@ -54,7 +63,6 @@ RUN apk add --update nodejs npm \ COPY symfony.ini /etc/php8/conf.d/ COPY symfony.ini /etc/php8/cli/conf.d/ -COPY xdebug.ini /etc/php8/conf.d/ COPY symfony.pool.conf /etc/php8/php-fpm.d/ diff --git a/php-fpm/xdebug.ini b/php-fpm/xdebug.ini index f865247..013ad3f 100644 --- a/php-fpm/xdebug.ini +++ b/php-fpm/xdebug.ini @@ -1,6 +1,6 @@ zend_extension=xdebug.so [Xdebug] -xdebug.mode=debug -xdebug.client_port=5902 -xdebug.client_host=host.docker.internal \ No newline at end of file +xdebug.mode=${PHP_XDEBUG_MODE} +xdebug.client_port=${PHP_XDEBUG_CLIENT_PORT} +xdebug.client_host=${PHP_XDEBUG_CLIENT_HOST} \ No newline at end of file