From 729fb56ab21222e3acaffa0f1e249be82797889f Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Wed, 6 Apr 2022 23:34:44 +0300 Subject: [PATCH] feat: setup docker files --- .gitmodules | 6 +++ Makefile | 14 +++++++ README.md | 1 + docker-compose.yml | 100 +++++++++++++++++++++++++++++++++++++++++++++ educt-client | 1 + educt-server | 1 + nginx/default.conf | 29 +++++++++++++ 7 files changed, 152 insertions(+) create mode 100644 .gitmodules create mode 100644 Makefile create mode 100644 README.md create mode 100644 docker-compose.yml create mode 160000 educt-client create mode 160000 educt-server create mode 100644 nginx/default.conf diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..5e9a7cf --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "educt-server"] + path = educt-server + url = https://github.com/sergeyyarkov/educt-server.git +[submodule "educt-client"] + path = educt-client + url = https://github.com/sergeyyarkov/educt-client.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..297b5ba --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +build: + docker-compose -f docker-compose.yml build $(c) +up: + docker-compose -f docker-compose.yml up -d $(c) +down: + docker-compose -f docker-compose.yml down $(c) +stop: + docker-compose -f docker-compose.yml stop $(c) +logs: + docker-compose -f docker-compose.yml logs --tail=100 -f $(c) +migrate: + docker-compose -f docker-compose.yml run api npm run db:migrate:force +seed: + docker-compose -f docker-compose.yml run api npm run db:seed \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..bdf5f10 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# Educt diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4a85b6b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,100 @@ +version: '3.8' + +services: + nginx: + container_name: nginx + restart: always + image: nginx:latest + volumes: + - ./nginx/default.conf:/etc/nginx/conf.d/default.conf + ports: + - 80:80 + depends_on: + - api + networks: + - app-network + client: + container_name: client + restart: always + build: + context: ./educt-client + target: production + dockerfile: Dockerfile + ports: + - 5000:5000 + depends_on: + - api + networks: + - app-network + api: + container_name: api + restart: always + build: + context: ./educt-server + target: production + dockerfile: Dockerfile + ports: + - 3333:3333 + environment: + - PORT=3333 + - APP_KEY=IP387l45rlNO3t7Qgjd89qr-a2G4oUgz + - DB_CONNECTION=pg + - PG_HOST=postgres + - PG_PORT=5432 + - PG_USER=postgres + - PG_PASSWORD=1234 + - PG_DB_NAME=educt + - REDIS_CONNECTION=local + - REDIS_HOST=redis + - REDIS_PORT=6379 + - REDIS_PASSWORD= + - SMTP_HOST=localhost + - SMTP_PORT=587 + - SMTP_USERNAME= + - SMTP_PASSWORD= + - MAILGUN_API_KEY= + - MAILGUN_DOMAIN= + - CACHE_VIEWS=false + - DRIVE_DISK=local + - S3_KEY= + - S3_SECRET= + - S3_BUCKET= + - S3_REGION= + volumes: + - uploads:/home/node/app/uploads + command: ['dumb-init', 'node', 'server.js'] + depends_on: + - postgres + networks: + - app-network + postgres: + container_name: postgres + image: postgres:14 + volumes: + - postgres_volume:/var/lib/postgresql/data + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: 1234 + POSTGRES_DB: educt + ports: + - 5432:5432 + networks: + - app-network + redis: + container_name: redis + image: redis:6-alpine + volumes: + - redis_volume:/data + ports: + - 6379:6379 + networks: + - app-network + depends_on: + - postgres +volumes: + postgres_volume: + redis_volume: + uploads: +networks: + app-network: + driver: bridge diff --git a/educt-client b/educt-client new file mode 160000 index 0000000..4e72abe --- /dev/null +++ b/educt-client @@ -0,0 +1 @@ +Subproject commit 4e72abee410a9ef889384211ecb3379926385aff diff --git a/educt-server b/educt-server new file mode 160000 index 0000000..793d7d6 --- /dev/null +++ b/educt-server @@ -0,0 +1 @@ +Subproject commit 793d7d650a0b99c1eec8e3d7b3e153ff8de20392 diff --git a/nginx/default.conf b/nginx/default.conf new file mode 100644 index 0000000..0778a4c --- /dev/null +++ b/nginx/default.conf @@ -0,0 +1,29 @@ +server { + listen 80; + + server_name localhost; + + location / { + proxy_pass http://client:5000; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_cache_bypass $http_upgrade; + } + + location /api { + proxy_pass http://api:3333; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_cache_bypass $http_upgrade; + } +}