From a3f7465955887d4cd18bd61d3ab39434583c009a Mon Sep 17 00:00:00 2001 From: dimti Date: Fri, 16 Feb 2024 17:36:20 +0300 Subject: [PATCH] + nodejs applications support with pm2 manager * use dockerhost in xdebug3 config for php8 in workspace * set local docker resolver for nginx * refactored base configs (join in one base config) and better separate examples for third party services * set default web port for inbucket to 82 instead of 9090, because last use for cockpit --- .gitignore | 6 +++-- bash/pm2-restart.sh | 22 ++++++++++++++++ bash/tail-nginx-access-log.sh | 9 +++++++ bash/tail-nginx-error-log.sh | 9 +++++++ config/nginx/conf.d/vhosts.conf.example | 2 +- config/nginx/conf.d/z-nodejs.conf.example | 20 +++++++++++++++ docker-compose.base.yml | 29 +++++++++++++++++++++- docker-compose.elastic.base.yml | 18 -------------- docker-compose.elastic.yml.example | 2 +- docker-compose.minio.base.yml | 10 -------- docker-compose.minio.yml | 2 +- docker-compose.minio.yml.example | 12 +++++++++ docker-compose.nodejs.yml.example | 15 +++++++++++ ...s.yml => docker-compose.postgres-ui.yml.example | 0 ...edis.yml => docker-compose.redis-ui.yml.example | 0 docker-compose.redis.yml.example | 11 ++++++++ ....yml => docker-compose.sphinxsearch.yml.example | 0 docker-compose.yml.example | 13 +++------- dockerfiles/pm2/Dockerfile | 5 ++++ dockerfiles/pm2/ecosystem.config.js | 11 ++++++++ dockerfiles/workspace/workspace81.Dockerfile | 7 ------ dockerfiles/workspace/xdebug3.ini | 3 --- src/dockerfiles/workspace/xdebug3.ini | 1 + 23 files changed, 154 insertions(+), 53 deletions(-) create mode 100755 bash/pm2-restart.sh create mode 100755 bash/tail-nginx-access-log.sh create mode 100755 bash/tail-nginx-error-log.sh create mode 100644 config/nginx/conf.d/z-nodejs.conf.example delete mode 100755 docker-compose.elastic.base.yml delete mode 100755 docker-compose.minio.base.yml create mode 100755 docker-compose.minio.yml.example create mode 100755 docker-compose.nodejs.yml.example rename docker-compose.postgres.yml => docker-compose.postgres-ui.yml.example (100%) rename docker-compose.redis.yml => docker-compose.redis-ui.yml.example (100%) create mode 100755 docker-compose.redis.yml.example rename docker-compose.sphinx.yml => docker-compose.sphinxsearch.yml.example (100%) create mode 100644 dockerfiles/pm2/Dockerfile create mode 100644 dockerfiles/pm2/ecosystem.config.js delete mode 100644 dockerfiles/workspace/xdebug3.ini diff --git a/.gitignore b/.gitignore index d152ee2..3850c5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ /.idea /dockerfiles/ypt-encoder -/docker-compose.yml -/docker-compose.elastic.yml +/docker-compose* +!/docker-compose.base.yml +!/docker-compose*.example +/docker-compose.nodejs.yml /.env /*.komodoproject \ No newline at end of file diff --git a/bash/pm2-restart.sh b/bash/pm2-restart.sh new file mode 100755 index 0000000..fe851e5 --- /dev/null +++ b/bash/pm2-restart.sh @@ -0,0 +1,22 @@ +#!/bin/bash +DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)" + +. $DIR/bash/_docker-cmd.sh || { + echo "no docker cmd is presented" && exit 1 +} + +PM2_SERVICE=$1 + +if [[ -z "${PM2_SERVICE}" ]]; then + echo "Usage: $(basename $0) NODEJS_PROJECT_NAME" + exit 1 +fi + +CONTAINER=$(docker ps | grep "pm2-${PM2_SERVICE}" | awk '{print $1}') + +if [[ -z "${CONTAINER}" ]]; then + echo "Unable to find container: db" + exit 1 +fi + +$DOCKER_CMD restart ${CONTAINER} \ No newline at end of file diff --git a/bash/tail-nginx-access-log.sh b/bash/tail-nginx-access-log.sh new file mode 100755 index 0000000..cfa70b5 --- /dev/null +++ b/bash/tail-nginx-access-log.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Not working on windows symlinks +DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)" + +LOG_FILE_PATH="${DIR}/log/nginx/access.log" + +clear + +tail -f $LOG_FILE_PATH \ No newline at end of file diff --git a/bash/tail-nginx-error-log.sh b/bash/tail-nginx-error-log.sh new file mode 100755 index 0000000..bddf687 --- /dev/null +++ b/bash/tail-nginx-error-log.sh @@ -0,0 +1,9 @@ +#!/bin/bash +# Not working on windows symlinks +DIR="$(realpath $(dirname "$(readlink -f "$0")")/..)" + +LOG_FILE_PATH="${DIR}/log/nginx/error.log" + +clear + +tail -f $LOG_FILE_PATH \ No newline at end of file diff --git a/config/nginx/conf.d/vhosts.conf.example b/config/nginx/conf.d/vhosts.conf.example index 5db9faf..8cce30b 100644 --- a/config/nginx/conf.d/vhosts.conf.example +++ b/config/nginx/conf.d/vhosts.conf.example @@ -21,7 +21,7 @@ map $http_accept $webp_suffix { "~*webp" ".webp"; } -resolver 8.8.8.8; +resolver 127.0.0.11; map $http_host $uploads_upstream { wordpress.local.wpstudio.ru "https://somewp.site"; diff --git a/config/nginx/conf.d/z-nodejs.conf.example b/config/nginx/conf.d/z-nodejs.conf.example new file mode 100644 index 0000000..12e6907 --- /dev/null +++ b/config/nginx/conf.d/z-nodejs.conf.example @@ -0,0 +1,20 @@ +map $http_host $pm2 { + someprojectone.build.local.wpstudio.ru pm2-someprojectone; + someprojecttwo.build.local.wpstudio.ru pm2-someprojecttwo; +} + +server { + listen 80; + server_name + someprojectone.build.local.wpstudio.ru + someprojecttwo.build.local.wpstudio.ru + ; + location / { + resolver 127.0.0.11; + proxy_pass http://$pm2:3000; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } +} \ No newline at end of file diff --git a/docker-compose.base.yml b/docker-compose.base.yml index 5f24430..8406174 100755 --- a/docker-compose.base.yml +++ b/docker-compose.base.yml @@ -71,10 +71,37 @@ services: restart: always ports: - "2500:2500" - - "9090:9000" + - "82:9000" redis: image: redis restart: always command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ] volumes: - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf + elastic: + build: + context: ./dockerfiles/elastic + restart: on-failure + environment: + - discovery.type=single-node + - "ES_JAVA_OPTS=-Xms512m -Xmx512m" + ulimits: + memlock: + soft: -1 + hard: -1 + expose: + - "9200" + - "9300" + minio: + image: minio/minio:RELEASE.2020-06-12T00-06-19Z + restart: always + environment: + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} + command: server /minio + pm2: + build: + context: ./dockerfiles/pm2 + restart: always + expose: + - 3000 \ No newline at end of file diff --git a/docker-compose.elastic.base.yml b/docker-compose.elastic.base.yml deleted file mode 100755 index b592be4..0000000 --- a/docker-compose.elastic.base.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: '3.6' - -services: - elastic: - build: - context: ./dockerfiles/elastic - restart: on-failure - environment: - - discovery.type=single-node - - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - ulimits: - memlock: - soft: -1 - hard: -1 - mem_limit: 2g - expose: - - "9200" - - "9300" diff --git a/docker-compose.elastic.yml.example b/docker-compose.elastic.yml.example index 10e9ae3..afc90a6 100755 --- a/docker-compose.elastic.yml.example +++ b/docker-compose.elastic.yml.example @@ -3,7 +3,7 @@ version: '3.6' services: elastic: extends: - file: docker-compose.elastic.base.yml + file: docker-compose.base.yml service: elastic restart: always build: diff --git a/docker-compose.minio.base.yml b/docker-compose.minio.base.yml deleted file mode 100755 index d0cbd5c..0000000 --- a/docker-compose.minio.base.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: '3.6' - -services: - minio: - image: minio/minio:RELEASE.2020-06-12T00-06-19Z - restart: always - environment: - MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY} - MINIO_SECRET_KEY: ${MINIO_SECRET_KEY} - command: server /minio diff --git a/docker-compose.minio.yml b/docker-compose.minio.yml index b101696..1736919 100755 --- a/docker-compose.minio.yml +++ b/docker-compose.minio.yml @@ -3,7 +3,7 @@ version: '3.6' services: minio: extends: - file: docker-compose.minio.base.yml + file: docker-compose.base.yml service: minio volumes: - minio:/minio diff --git a/docker-compose.minio.yml.example b/docker-compose.minio.yml.example new file mode 100755 index 0000000..1736919 --- /dev/null +++ b/docker-compose.minio.yml.example @@ -0,0 +1,12 @@ +version: '3.6' + +services: + minio: + extends: + file: docker-compose.base.yml + service: minio + volumes: + - minio:/minio + +volumes: + minio: diff --git a/docker-compose.nodejs.yml.example b/docker-compose.nodejs.yml.example new file mode 100755 index 0000000..86e1929 --- /dev/null +++ b/docker-compose.nodejs.yml.example @@ -0,0 +1,15 @@ +version: '3.6' + +services: + pm2-someprojectone: + extends: + file: docker-compose.base.yml + service: pm2 + volumes: + - ${PROJECTS_DIR}/someprojectone/.output:/.output + pm2-someprojecttwo: + extends: + file: docker-compose.base.yml + service: pm2 + volumes: + - ${PROJECTS_DIR}/someprojecttwo/.output:/.output \ No newline at end of file diff --git a/docker-compose.postgres.yml b/docker-compose.postgres-ui.yml.example similarity index 100% rename from docker-compose.postgres.yml rename to docker-compose.postgres-ui.yml.example diff --git a/docker-compose.redis.yml b/docker-compose.redis-ui.yml.example similarity index 100% rename from docker-compose.redis.yml rename to docker-compose.redis-ui.yml.example diff --git a/docker-compose.redis.yml.example b/docker-compose.redis.yml.example new file mode 100755 index 0000000..8680482 --- /dev/null +++ b/docker-compose.redis.yml.example @@ -0,0 +1,11 @@ +version: '3.6' + +services: + redis-someprojectone: + extends: + file: docker-compose.base.yml + service: redis + redis-someprojecttwo: + extends: + file: docker-compose.base.yml + service: redis \ No newline at end of file diff --git a/docker-compose.sphinx.yml b/docker-compose.sphinxsearch.yml.example similarity index 100% rename from docker-compose.sphinx.yml rename to docker-compose.sphinxsearch.yml.example diff --git a/docker-compose.yml.example b/docker-compose.yml.example index f5794ad..0e9f6c4 100755 --- a/docker-compose.yml.example +++ b/docker-compose.yml.example @@ -8,7 +8,10 @@ services: networks: default: aliases: - - loc.yoursite.ru + - someproject.local.wpstudio.ru + depends_on: + - php74 + - php81 php74: extends: file: docker-compose.base.yml @@ -45,14 +48,6 @@ services: extends: file: docker-compose.base.yml service: inbucket - redis: - extends: - file: docker-compose.base.yml - service: redis - redis-some: - extends: - file: docker-compose.base.yml - service: redis volumes: database: diff --git a/dockerfiles/pm2/Dockerfile b/dockerfiles/pm2/Dockerfile new file mode 100644 index 0000000..f27d6ce --- /dev/null +++ b/dockerfiles/pm2/Dockerfile @@ -0,0 +1,5 @@ +FROM keymetrics/pm2:18-buster + +COPY ./ecosystem.config.js /ecosystem.config.js + +CMD ["pm2-runtime", "start", "ecosystem.config.js"] diff --git a/dockerfiles/pm2/ecosystem.config.js b/dockerfiles/pm2/ecosystem.config.js new file mode 100644 index 0000000..6af7109 --- /dev/null +++ b/dockerfiles/pm2/ecosystem.config.js @@ -0,0 +1,11 @@ +module.exports = { + apps: [ + { + name: 'NuxtAppName', + port: '3000', + exec_mode: 'cluster', + instances: '2', + script: './.output/server/index.mjs', + }, + ], +}; diff --git a/dockerfiles/workspace/workspace81.Dockerfile b/dockerfiles/workspace/workspace81.Dockerfile index f4f5805..9a2e758 100644 --- a/dockerfiles/workspace/workspace81.Dockerfile +++ b/dockerfiles/workspace/workspace81.Dockerfile @@ -70,13 +70,6 @@ ENV COMPOSER_VERSION ${COMPOSER_VERSION} RUN composer self-update --${COMPOSER_VERSION} ########################################################################### -# xDebug (termporary): -########################################################################### - -# Copy xdebug configuration for remote debugging -COPY ./xdebug3.ini /etc/php/${PHP_VERSION}/cli/conf.d/xdebug.ini - -########################################################################### # Laradock Aliases ########################################################################### diff --git a/dockerfiles/workspace/xdebug3.ini b/dockerfiles/workspace/xdebug3.ini deleted file mode 100644 index ea0d133..0000000 --- a/dockerfiles/workspace/xdebug3.ini +++ /dev/null @@ -1,3 +0,0 @@ -xdebug.mode=debug -xdebug.client_host=172.18.0.1 -xdebug.start_with_request=yes diff --git a/src/dockerfiles/workspace/xdebug3.ini b/src/dockerfiles/workspace/xdebug3.ini index d46739b..c23485b 100644 --- a/src/dockerfiles/workspace/xdebug3.ini +++ b/src/dockerfiles/workspace/xdebug3.ini @@ -1,2 +1,3 @@ xdebug.mode=debug +xdebug.client_host=dockerhost xdebug.start_with_request=yes