From a4c31efdb601c65b1f717813309508af8787862b Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Tue, 8 Aug 2023 15:33:23 +0300 Subject: [PATCH] Setup production env --- .gitignore | 2 +- docker-compose.yml => docker-compose-dev.yml | 2 - docker-compose-prod.yml | 80 ++++++++++++++++++++ nginx/default.conf | 2 +- postgresql/.env.prod | 2 + rsconcept/backend/.env.dev | 4 +- rsconcept/backend/.env.prod | 24 ++++++ rsconcept/frontend/src/utils/constants.ts | 3 +- 8 files changed, 112 insertions(+), 7 deletions(-) rename docker-compose.yml => docker-compose-dev.yml (98%) create mode 100644 docker-compose-prod.yml create mode 100644 postgresql/.env.prod create mode 100644 rsconcept/backend/.env.prod diff --git a/.gitignore b/.gitignore index 6a9f755e..90243dbb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # SECURITY SENSITIVE FILES -# persistent/* +secrets/ # External distributions rsconcept/backend/import/*.whl diff --git a/docker-compose.yml b/docker-compose-dev.yml similarity index 98% rename from docker-compose.yml rename to docker-compose-dev.yml index c3ebae27..37683125 100644 --- a/docker-compose.yml +++ b/docker-compose-dev.yml @@ -1,5 +1,3 @@ -version: "3.9" - volumes: postgres_volume: name: "postgres-db" diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml new file mode 100644 index 00000000..b9d406f5 --- /dev/null +++ b/docker-compose-prod.yml @@ -0,0 +1,80 @@ +volumes: + postgres_volume: + name: "portal-db" + django_static_volume: + name: "portal-static" + django_media_volume: + name: "portal-media" + +networks: + default: + name: concept-api-net + +secrets: + django_key: + file: ./secrets/django_key.txt + db_password: + file: ./secrets/db_password.txt + +services: + frontend: + restart: always + container_name: "portal-front" + depends_on: + - backend + build: + context: ./rsconcept/frontend + ports: + - 3000:3000 + command: serve -s /home/node -l 3000 + + + backend: + restart: always + container_name: "portal-back" + depends_on: + - postgresql-db + - nginx + secrets: + - db_password + - django_key + build: + context: ./rsconcept/backend + env_file: ./rsconcept/backend/.env.prod + environment: + SECRET_KEY: /run/secrets/django_key + DB_PASSWORD: /run/secrets/db_password + ports: + - 8000:8000 + volumes: + - django_static_volume:/home/app/web/static + - django_media_volume:/home/app/web/media + command: + gunicorn -w 3 project.wsgi --bind 0.0.0.0:8000 + + + postgresql-db: + restart: always + container_name: "portal-db" + image: postgres:alpine + secrets: + - db_password + env_file: ./postgresql/.env.prod + environment: + POSTGRES_PASSWORD: /run/secrets/db_password + volumes: + - postgres_volume:/var/lib/postgresql/data + + + nginx: + restart: always + container_name: "portal-nginx" + build: + context: ./nginx + ports: + - 1337:80 + command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" + volumes: + - django_static_volume:/var/www/static + - django_media_volume:/var/www/media + diff --git a/nginx/default.conf b/nginx/default.conf index 0373db16..45d41406 100644 --- a/nginx/default.conf +++ b/nginx/default.conf @@ -6,7 +6,7 @@ upstream innerdjango { server { listen 80; - server_name rs.acconcept.ru; + server_name portal.acconcept.ru; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; diff --git a/postgresql/.env.prod b/postgresql/.env.prod new file mode 100644 index 00000000..69f1a2b7 --- /dev/null +++ b/postgresql/.env.prod @@ -0,0 +1,2 @@ +POSTGRES_USER=portal-admin +POSTGRES_DB=portal-db \ No newline at end of file diff --git a/rsconcept/backend/.env.dev b/rsconcept/backend/.env.dev index 175ac302..94ee2d3f 100644 --- a/rsconcept/backend/.env.dev +++ b/rsconcept/backend/.env.dev @@ -4,8 +4,8 @@ # Application settings SECRET_KEY=django-insecure-)rq@!&v7l2r%2%q#n!uq+zk@=&yc0^&ql^7%2!%9u)vt1x&j=d ALLOWED_HOSTS=rs.acconcept.ru;localhost;portal.acconcept.ru -CSRF_TRUSTED_ORIGINS=http://rs.acconcept.ru:3000;http://localhost:3000;http://portal.acconcept.ru:3000 -CORS_ALLOWED_ORIGINS=http://rs.acconcept.ru:3000;http://localhost:3000;http://portal.acconcept.ru:3000 +CSRF_TRUSTED_ORIGINS=http://rs.acconcept.ru:3000;http://localhost:3000 +CORS_ALLOWED_ORIGINS=http://rs.acconcept.ru:3000;http://localhost:3000 # File locations diff --git a/rsconcept/backend/.env.prod b/rsconcept/backend/.env.prod new file mode 100644 index 00000000..e0536adb --- /dev/null +++ b/rsconcept/backend/.env.prod @@ -0,0 +1,24 @@ +# Application settings + +ALLOWED_HOSTS=localhost;portal.acconcept.ru;dev.concept.ru +CSRF_TRUSTED_ORIGINS=http://dev.concept.ru:3000;http://localhost:3000;http://portal.acconcept.ru:3000 +CORS_ALLOWED_ORIGINS=http://dev.concept.ru:3000;http://localhost:3000;http://portal.acconcept.ru:3000 + + +# File locations +STATIC_ROOT=/home/app/web/static +MEDIA_ROOT=/home/app/web/media + + +# Database settings +DB_ENGINE=django.db.backends.postgresql_psycopg2 +DB_NAME=portal-db +DB_USER=portal-admin +DB_HOST=postgresql-db +DB_PORT=5432 + + +# Debug settings +DEBUG=0 +PYTHONDEVMODE=0 +PYTHONTRACEMALLOC=0 \ No newline at end of file diff --git a/rsconcept/frontend/src/utils/constants.ts b/rsconcept/frontend/src/utils/constants.ts index fb59c749..0baa1dca 100644 --- a/rsconcept/frontend/src/utils/constants.ts +++ b/rsconcept/frontend/src/utils/constants.ts @@ -1,6 +1,7 @@ // Constants const prod = { - backend: 'http://rs.acconcept.ru:8000', + // backend: 'http://dev.concept.ru:8000', + backend: 'http://localhost:8000', }; const dev = {