á áá
á˝áá ááľáĽ á¨áááľá á¨ááĽáĽá áááá áĽá á¨ááľáŠáĽ áľáááśá˝á á áá áá CI/CDá á¨áááá ááá´á á áŤááááᢠáᏠ"Helloworld" á ááá áŤáá°ááłá°á áľá á ááľ ááá ááŽáááľ áĽáá´áľ áá°ááŤáľ áĽáá°ááťá áĽáááŤáá. á¨á°ááá á áááľá áááá ááĽááᣠá¨á´á᪠á°áŤá°áá˝ áĽá ᨠAngular 8 frontend áá ááá˘
áá° áá¨ááťáá˝ á¨áááľáą á áááá˝áĄ-
á á áááš á¨ááááŞáŤ ááá ááľáĽ á¨áĽáá ááŽáááľ áĽá áááášá áĽáááá¨áłáá. á ááá°áá ááľáĽ, áááľáá áĽáá´áľ áááá áĽááłááĽá áĽá á áľááááášá ááŤáááŤáá˝ áĽá á áŤááľ (DB, RabbitMQ, Redis, Docker, ááá°) áĽááááá.
á áśáľá°áá ááá á áá¨á¨áť ááŽáááłá˝áá á á´á áĽá ááŽáľ á áŤáŁá˘ áá° á áááá ááá°ááŤáľ á¨á§á᧠ááľáá áĽáá´áľ áĽáá°ááááá áĽááŤááᢠáĽá á¨á፠áŁá˘áŤáá á á áááአáá áĽááľáááŤáá.
áĽá á á, áĽáŤá´á ááľá°ááá
á¨áłá. áľá áŚáá áŚááá áĽáŁáááᣠá Domclick ááľáĽ ááááá
á áľá°áłáłáŞáá˝ á CRM áĄáľá ááľáĽ áá ááá ááᢠááá˘
á¨ááŽáááľ á á ááá áĽááł
á ááááŞáŤ ᣠáááľ á¨ááŽáááľ áá¨ááťáá˝á - á¨áá áĽá á¨ááľ - áĽá á áŽáą áá áĽááá˘
áááŁáĄ áĽáááĽ+á´ááŞ
ááááá áááᣠá áááá ááá˘áá˝ áááľ á áŁá á°ááłá á¨áá áľáĽáľáĽ áá°áľáŠáĄ á¨áááľá áááá (áá¤áá á) áĽá á´á᪠(áá°ááŁá áá¨á)ᢠSQLAchemy áĽáá° ORM áĽá á áá ááááᢠAlembic ááľá°áľ áŤáááááᢠá ááŤáŁáá˝ ááľáĽ áJSON áá¨áá፠- Marshmallowá˘
Đ
/ping
- á°ááááľá ááá¨áááĽ;- áááááŁ, ááááľ, á¨áááľ áá¨áá¨á áĽá á¨á°ááá° á°á áá áááááľ ááŤáŁáá˝;
- á á´á᪠áá¨á ááľáĽ á ááľ á°ááŁá á¨ááŤáľááἠá¨á˘áá áĽááłá˘
send_mail_task
.
á á áá ááľáĽ
docker
á¨áááľ áśá¨ááááá˝ áá (base.dockerfile
áĽááĽáá á¨áááááἠá¨áá á¨áľ ááľá áááááŁáľ áĽáDockerfile
ááá áá áľáĽá°áŁáá˝);.env_files
- áá°ááŤáŠ á áŤáŁá˘áá˝ á¨á áŤáŁá˘ á°ááááŽá˝ áŤá áááá˝ ááá˘
á ááŽáááą áĽá¨-áĽá áá á áŤáľ áśá¨á áŤáááĽáŠ áááá˝ á áá˘
docker-compose.local.db.yml
ááááľ á áŤáŁá˘áŤá á¨ááἠááł ááááłáľ;docker-compose.local.workers.yml
á¨á°áŤá°ááá, á¨ááἠááł, Redis áĽá RabbitMQá áá áŤáŁá˘ ááłá°á;docker-compose.test.yml
á áá°ááŤáľ áá áá¨áŤáá˝á áááŤááľ;docker-compose.yml
ááá°ááŤáľ.
áĽá áĽá á¨áááááá á¨áá¨á¨áťá á áá -
deploy.sh
- á¨áľá°áľ áááá áĽá áá°ááŤáľ. á Github Actions ááľáĽ áá¨áŤáá˝á á¨ááᥠáĽá áŤáŤááą á áá á á áááአáá áá°áŤá;rollback.sh
- ááŤáŁáá˝á áá° ááľáá á¨áľáĽá°áŁá áľáŞáľ ááááľ;curl_tg.sh
- áá° á´áááŤá á¨áá°ááŤáľ ááłáááŤáá˝á á ááá ááá˘
ááľ áááľ á Angular
- á˘áá áááá á á˝ áĽá áá፠ááá áŤáá áá áá˝á˘
- á¨ááá˘áŤ áá˝.
- á¨áááᣠáá˝.
ááá áá˝ á áŁá á¨ááŤáá áááľáááĄ-
á áĽáŠ áá áááľ áááá˝ á áᢠDockerfile
и docker-compose.yml
, áĽáá˛áá á¨ááłááá á áá .ci-cd
á¨áá áá¨ááťá á áľááš áŤááą áľááŞááśá˝ (ááá¨áŤáá˝ á¨á°áááą áľááŞááśá˝)á˘
á áááľá ááľáĽ ááŽáááľ áááá
áááľáá á áááááľ áĽá ááŁá˘áŤá˝á áááᣠá ááá á áĽááááá˘
á áĽáŤáá˝á á ááŤá áá
á áááľá ááľáĽ á áŤáľ ááŤáááŤáá˝ áŤáľááááááĄ
Docker
á Plesk á¨á áľá°áłáłáŞ ááá ááľáĽ áŤááľá ááŤáŁáá˝ áááł áááľá°áłá°á áĽá á áĽááł áááłá¨áľ;Git
á á áááአáá á¨áá°ááŤáľ á°á¨áá ááááá;Let's Encrypt
áá á¨TLS á°áá°ááŹáśá˝á ááááá¨áľ (áĽá á áŤáľ-áá°áľ);Firewall
á¨áᢠáľáŤáá ááŁáŞáŤá áááááá˘
á á áĽáŤáá˝ ááá ááľáĽ á Plesk á áľá°áłáłáŞ ááá á áŠá áááá¸á áá˝áá-
áá
áĽáŤáá˝ áááá á
ááĽáŽá˝á á áááá¨áľá ᣠááŁáŞ á
áá
áśá˝ áá ááłáŤ ááááá˝ ááááá˘
á¨á°áá áááľ áááᣠáĽá áŁá˘áŤ ááá áŠ
á ááá á á helloworld.ru áľá áŁá˘áŤá˝á áááᣠááá á áĽá ᨠdev.helloworld.ru áááľ á፠áĽá፠áá¨á á ááĽáá˘
- á helloworld.ru á፠áááᣠááá አáĽá ááľáááą á°á áá á¨ááá˘áŤ-ááá áá ááĽááąáĄ
á¨ááš ááá áá áŁáá áłáĽá áá ááááľ áŤáľáá ááŤáá á á á˘áááŞááľ áĽááľá áĽá ááŁá˘áŤá HTTPS á áááá á¨áááááĄ- - á ááá áᣠá áá á¨á°áá áááľ áááᣠááľáĽáŁ áááľ á፠ááá አdev.helloworld.ru (ááá á áá á¨TLS á°áá°ááŹáľ ááľá áľ áá˝áá)
á¨á áááá áááá˝á á ááŤá áá
áá á áááá á ááᢠáŚá¤áľ á´á˘áŤá ááááł 9.12 áĽá á¨á°áŤá á¨ááĽáĽá ááá Plesk Obsidian 18.0.27.
áááŽáááłá˝á ááŤá áĽá áááá á ááĽááĄ-
- PostgreSQL (á áĽá áááł áá´á áĽá ááŽáľ á á¨áŁá˘áá˝ áááľ á¨ááἠááłáá˝ áŤááľ á ááľ á áááá áááŤá)á˘
- RabbitMQ (á°ááłáłáᣠá°ááłáłá ááłá á¨á á¨áŁá˘ á¨á°ááŤáŠ vhosts áá)á˘
- áááľ Redis ááłááá˝ (áá´á áĽá ááŽáľ á áŤáŁá˘áá˝)á˘
- Docker áááἠá¤áľ (á¨á°ááᥠDocker ááľáá˝á áá áŤáŁá˘áŤá áá¨ááť)á˘
- UI á Docker áááἠá¤áľá˘
PostgreSQL
Plesk ááľáááá á¨PostgreSQL DBMS áá áá á¨áááŁáᣠáá á¨á
áἠááá áľáŞáľ á áá°áá (Plesk Obsidian á áá˝áá áľ áá)
á ááľááአáá á á´á˘áŤá áá Postgresá áááŤá áĽá áááá áááŞáŤáá˝ á á (
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib
PostgreSQL ááŤá¨áá ááŁáŞ á
áá
áśá˝ áĽááłááľ á¨áááľ á ááľááŁáľ á ááááŠá ááľá°áŤá¨á á áľááá ááᢠáá
áá¨áłáá /etc/postgresql/12/main/postgresql.conf
ááá¨áĄáľá˘ áĽáá
áá áἠááŁá á¨áááŁá áĽáá°ááá
áŤááľ á áľááá˝ á áľááłá áĽááľ áĽááłááá áĽá áá°á¨áą á áááľááá ᣠá áá°áá áŞáŤá áĽá á áĽáŤáá ááľáĽáľáĽááľ áá á ááááŽá á áľááá ááľá°áŤá¨á á áá áľá˘ áá áá
ááááá á á áá.
á áŤááŠáá°áŠ á¨áá¨áĄáľ á
áá
áśá˝ á á°á¨á᪠áá° ááľáĽ áĽááááŤáá postgresql.conf
ááŁáŞ áá°áĽ 5432 áá° áá (á áĽá ááłá - 53983).
á¨ááááŞáŤ áááá á¨áá¨áŠ á áá postgresql-á áááá á áľáĽáá áĽáá°áá áŤáľáááŠáĄ-
service postgresql restart
PostgreSQLá ááá á áá á¨áááᢠá áá á¨ááἠááł áĽááá áᣠá°á áááá˝ áá´á- áĽá ááŽáľ-á áŤáŁá˘áá˝áŁ áĽá áá°á áááá˝ á¨ááἠááłáá á¨ááľá°áłá°á ááĽáśá˝á áĽááľáĽáĄ
$ su - postgres
postgres:~$ create database hw_dev_db_name;
CREATE DATABASE
postgres:~$ create user hw_dev_db_user with password 'hw_dev_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_dev_db_name to hw_dev_db_user;
GRANT
postgres:~$ create database hw_prod_db_name;
CREATE DATABASE
postgres:~$ create user hw_prod_db_user with password 'hw_prod_db_password';
CREATE ROLE
postgres:~$ grant ALL privileges ON database hw_prod_db_name to hw_prod_db_user;
GRANT
RabbitMQ
áá´á᪠á¨áááĽááľ á°áá áá°ááá RabbitMQ áá° ááŤá áĽáááľá˘ á á´á˘áŤá áá ááŤá á áŁá ááá áááĄ-
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang erlang-nox
sudo add-apt-repository 'deb http://www.rabbitmq.com/debian/ testing main'
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install rabbitmq-server
á¨á°áŤá á áá, ááá á á ááĽá vhosts, á°á áááá˝ áĽá á áľááá ááĽáśá˝á ááľáĄ:
sudo rabbitmqctl add_user hw_dev_amqp_user hw_dev_amqp_password
sudo rabbitmqctl set_user_tags hw_dev_amqp_user administrator
sudo rabbitmqctl add_vhost hw_dev_vhost
sudo rabbitmqctl set_permissions -p hw_dev_vhost hw_dev_amqp_user ".*" ".*" ".*"
sudo rabbitmqctl add_user hw_prod_amqp_user hw_prod_amqp_password
sudo rabbitmqctl set_user_tags hw_prod_amqp_user administrator
sudo rabbitmqctl add_vhost hw_prod_vhost
sudo rabbitmqctl set_permissions -p hw_prod_vhost hw_prod_amqp_user ".*" ".*" ".*"
Redis
á áá ááá°áá áŞáŤá˝á á¨áá¨á¨áťáá á áŤá - áŹá˛áľá áĽááá áĽá áĽááá á. á¨á´áá¨áŞ á°ááŁáŤáľá áá¤áľ ááá¨áá¸áľ áĽáá° ááᣠáĽá á áá áááá.
á
áĽáŤáá á áá áá áááľ á¨áśá¨á áŽáá´áááŽá˝á á¨Redis áá´á áĽá ááŽáľ á á¨áŁá˘áá˝ áĽáááłááᢠDocker
ááááľá.
- áá° áááľá áĽáááłááᣠáá° á áĽáŤáá˝ ááá áááąáŁ á¨áśá¨á á áĽáŤáá áááá áĽá ááŤááľ (áá áľáŞáľ áĽáááááá)
- áá° á¨á°áŤáá á
áĽáŤ áááą, á áááá ááľáĽ ááľáá áŤáá
redis bitnami
áĽá á¨á áἠáááá áľáŞáľ ááŤááĄ- - áá° á¨áá¨á°á áŽáá´ááá ááĽá°á á ááááŠá áĽááľá°áŤááááᥠáá°áĄáᣠá¨á°áá°á áá á¨áá°ááá ᨠRAM áá áᣠá¨ááá áá á á áŤáŁá˘ á°ááááŽá˝ ááááš áĽá áľáášá áĽáá°áŤááá˘
- áááŽáľ áŽáá´ááá á°á¨á 2-3á áĽáá¨ááááá ᣠá á ááĽáŽá˝ ááľáĽ áááŞáŤáá˝á áĽáť áĽááááŁáá-áá°áĽ ᣠá¨ááá áá ᣠᨠRAM áá á áĽá á á áááአáá áá° á¨áľáá˝ á ááá ááááľ
Docker áááἠá¤áľ
á¨áá á¨áłá á áááááśá˝ á á°á¨ááŞ, á¨áŤáľáá Docker ááľá áá¨ááť á á áááአáá ááľááἠáĽáŠ áááá. áĽáá° áĽáľá ááᣠá¨á áááá áŚáł á áá á áŁá ááŤá˝ áá (á áĽááá áááľ á¨DockerHub áááᣠá¨á áá ááŤá˝ áá) áĽá á¨áá áá¨ááť á¨áááááľ áá°áľ á áŁá ááá ááá˘
áĽáá˛áá¨á áĽáááááá:
- á ááá áá á¨á°á á á Docker áá¨ááť á ááĄáľ á፠áá á°á°áŤá˝ ááá˘
https://docker.helloworld.ru ; - á áá¨ááťá ááľáĽ ááľáá˝á ááá¨áľ UIᣠá áá ááááá˘
https://docker-ui.helloworld.ru .
áá áá áááľá¨á:
- á áĽá á¨á°áá áááľ áááᣠááľáĽ á áááľá ááľáĽ áááľ áááľ ááŤáá˝á áĽááá á docker.helloworld.ru áĽá docker-ui.helloworld.ru áĽá ááĽáááą á¨ááľáá áá¨ááśá˝á áĽáááľáĽáá˘
- áááá áá° docker.helloworld.ru áááľ á፠á áá áŤáá
docker-compose.yml
áĽáá°áá á áááľ áááľ áŤáááĄ-version: "3" services: docker-registry: image: "registry:2" restart: always ports: - "53985:5000" environment: REGISTRY_AUTH: htpasswd REGISTRY_AUTH_HTPASSWD_REALM: basic-realm REGISTRY_AUTH_HTPASSWD_PATH: /auth/.htpasswd REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /data volumes: - ./.docker-registry.htpasswd:/auth/.htpasswd - ./data:/data docker-registry-ui: image: konradkleine/docker-registry-frontend:v2 restart: always ports: - "53986:80" environment: VIRTUAL_HOST: '*, https://*' ENV_DOCKER_REGISTRY_HOST: 'docker-registry' ENV_DOCKER_REGISTRY_PORT: 5000 links: - 'docker-registry'
- á á¤áľá¤áľá¤á˝ áľáᣠá Docker áá¨ááť ááľáĽ ááá á¨áłá áááľ á¨htpasswd ááá áĽááááŤááá˘
htpasswd -bBc .htpasswd hw_docker_admin hw_docker_password
- ááŤáŁáá˝á áá°áĽá°áĽ áĽá áááłáľ;
docker-compose up -d
- áĽá Nginxá áá° ááŤáŁááťá˝á ááá áŤáľááááá. áá á áááľá á áŠá áá¨ááá áá˝áá.
á¨áá¨á°ááľ áĽááááá˝ á docker.helloworld.ru áĽá docker-ui.helloworld.ru áááľ ááŤáá˝ áá°á¨á á ááŁá¸áá˘
ááá á´á ááŁáŞáŤáá˝á˘ áŁá˘áŤá˝á áááą á¨áśá¨á á°áŞ á áá˝:
áĽá á áĽá ááŤáŁá˝á áá áá°áŞ áᢠáľáŤáá á
áá áŤáááĄ-
- á¨á áŤáŁá˘á áá˝á áá° ááá˝á áááŁáľ áĽáá°ááá˝á áĽáá¨áááŁááá˘
$ docker login docker.helloworld.ru -u hw_docker_admin -p hw_docker_password WARNING! Using --password via the CLI is insecure. Use --password-stdin. Login Succeeded
- áĽáá˛áá ᨠdocker-ui.helloworld.ru áááľ ááŤáá á á áŤá áĽáááľá˝áĄ-
á¨áá¨á ááśá˝á á áľáľ á¨áááá á á á˛áŤá°áá á áłáš á¨áá¨á áá¨ááťáá á¨á°á áá áľá áĽá á¨ááá áá ááľááŁáľ á¨ááŤáľáááá áľ á¨áááľ ááľáŤ ááľáŽáľ áŤáłáŤáᢠá¨á፠á ááᣠá¨áá áŤáááŤáá˝ áááá ááłáá áá˝ áĽáááŤáá (áá ááᣠáŁáś ááááááłá)
á áááľá áá¨ááá ááľáĽ áá°áŚá˝á á ááááľ áá
áááášá á¨áŤá áĽá áŤááአá áá ááááš á¨áśá¨á áŽáá´áááŽá˝ áĽá á¨áá á ááłá¨áá¨áĽ á°á°áŤá˝ áĽáá˛áá áá°áŚá˝á ááááľ á ááĽáá˘
á¨áá áá°á á¨áŤáááá á¨áá¨ááá á áĽáŤ ááááľá á áá áá áĽáá´áľ áĽáá°ááá°áá áĽááá˘
- áááľ ááłáŞáŤáá˝ áĽá ááźáśá˝ > ááźáśá˝ > áá¨ááá:
- áááľ Plesk áá¨ááá á°ááŚá˝á áŤáťá˝á > áĽá á
á áŤáá áĽá á¨áá¨á°ááľá á¨TCP áá°áŚá˝ á Docker subnet ááááą (172.0.0.0 / 8):
RabbitMQᥠ1883ᣠ4369ᣠ5671-5672ᣠ25672ᣠ61613-61614
á á˛áľáĄ 32785ᣠ32786 - áĽáá˛áá ᨠPostgreSQL áá°áŚá˝á áĽá ᨠRabbitMQ á áľá°áłá°á áááá˝á áá° ááá ááá á¨áá¨ááľ á áá áĽáá¨ááŤáááĄ
- áááŚá˝á á°ááĽá á¨áááá ááá á áá áá á°ááŚášá áá°ááĽáŠáĄ-
á Github Actions ááľáĽ CI/CD áááá
áá° á áŁá á áľá°áłá˝ ááá áĽááá¨áľ - ááŁáááľ áŤáá á¨áá á°áľ ááľáá ááááł áĽá ááŽáááłá˝áá áá áááአááľá¨áľá˘
áá á§á᧠áááľ áááá˝á áŤáá áááá.
- ááľá ááááŁáľ áĽá á¨áŠáŤ áá¨áŤáá˝ (ááááŁá) - á Github á áŠá;
- ááááŹá˝á (ááááŁá) áááľ áĽá ááŤáŁáá˝á áá°ááŤáľ - á á áááአáá.
áá° Plesk á á°áá
á ááááŞáŤ ááá°ááá ááĽáĽ áĽáá (á¨ááááŞáŤá á áĽáą áá á¨á°áá°á¨á° áľááá)á˘
á¨ááľ á áĽáŤ á Plesk á áá áá á¨áá°ááŤáľ áá°áąá áĽááá áŤááá˘
áBackend áá¨ááť á¨ááŽáľ á áŤáŁá˘ áá á ááľ ááłáá á áľáĄá˘
- áá° á¨áááááľ áľá¨-ááá˝á áááᣠáá°á áá° Git áááľ ááá áĽáááłááá˘
- áá° Github áá¨ááťá˝á á¨áááľáľ á ááá áá° "á¨áááľ Git áá¨ááť" ááľá á áľáᣠáĽá ááŁáŞáá á áá ááá
httpdocs
ááá (áááłá/httpdocs/hw_back
): - á¨á¤áľá¤áľá¤á˝ á¨á
áἠáááá á¨ááłáá á°á¨á áá
áą áĽá
áŤáá á Github á ááĽáŽá˝ ááľáĽ ááᢠ- á áľááŞá áá á á°á¨á 2 áá áĽáşá á á
áŤáľáá ᣠá¨á፠á áá áá° áááľá áá°áááá á¨áá¨á áá¨ááť áá˝ áĽáááŤááᢠá áá áááá á
áááŤá ááá áááľ áĽáá˛ááá áá¨ááťáá áááá á ááĽáᢠáá
áá áááľá¨á áá° áááą á¨áá áŤáá፠á
ááĽáŽá˝ áĽá áááá áŤáľáááĄ
Webhook URL
(Gitub Actions á á˛áŤáááĽáŠ á áá áá áĽáááááá) - áŤááá á ááá
á áľááŞá áá áŁáá á¨á°ááŁá ááľá áá áá°ááŤáąá áááľááá áľááŞááąá áŤáľááĄáĄ-
cd {REPOSITORY_ABSOLUTE_PATH} .ci-cd/deploy.sh {ENV} {DOCKER_REGISTRY_HOST} {DOCKER_USER} {DOCKER_PASSWORD} {TG_BOT_TOKEN} {TG_CHAT_ID}
á¨áľ
{REPOSITORY_ABSOLUTE_PATH}
- á á áááአáá áá° á¨áááŁá áá¨ááť ááŽáľ á áá á¨áááľá°á ááááľ;
{ENV}
- á áŤáŁá˘ (dev / prod), á áĽá áááłprod
;
{DOCKER_REGISTRY_HOST}
- á¨áśáá°á áá¨ááťá˝á á áľá°ááá
{TG_BOT_TOKEN}
- á´áááŤá áŚáľ áśá¨á;
{TG_CHAT_ID}
- ááłáááŤáá˝á áááá á¨ááááľ / áťáá ááłáááŤá˘á¨áľááŞááľ ááłááĄ-
cd /var/www/vhosts/helloworld.ru/httpdocs/hw_back/ .ci-cd/deploy.sh dev docker.helloworld.ru docker_user docker_password 12345678:AAbcdEfghCH1vGbCasdfSAs0K5PALDsaw -1001234567890
- á°á ááá á¨á°áá áááľ ááááŁá˝á áá° Docker áĄáľá áŤáá (ááŤáŁáá˝á ááľá°áłá°á áĽáá˛á˝á)áĄ-
sudo usermod -aG docker helloworld_admin
ááááá áá¨ááť áĽá áááľ áááľ áŤáá á¨á´á á á¨áŁá˘ á á°ááłáłá ááááľ á°ááá áˇáá˘
á Github Actions ááľáĽ á¨áá°ááŤáľ á§áá§
á Github Actions ááľáĽ á¨áĽáá á¨á˛á á/á˛á˛ á§á᧠ááľáá á¨ááááŞáŤ ááá áá°áááááľ áĽáááľá˘
á°áá
á¨á§á᧠ááľáá á ááľáĽ á°áááżá
á¨áá°áá°á á ááľ áá á Github ááľáĽ á¨áááááá¸áá ááľáĽáŤá á°ááááŽá˝ áĽáááᢠáá áá áááľá¨á áá° áááą á ááĽáŽá˝ -> ááľáĽáŽá˝:
DOCKER_REGISTRY
- á¨áĽá Docker áá¨ááť á áľá°ááá (docker.helloworld.ru);DOCKER_LOGIN
- áá° áśá¨á áá¨ááť áááŁáľ;DOCKER_PASSWORD
- ááĽáą á¨ááá áá;DEPLOY_HOST
- á¨áááľá á áľá°áłáłáŞ ááá á¨áááá áľá á áľá°ááá (áááłááĄ-helloworld.com : 8443 ááá123.4.56.78 : 8443);DEPLOY_BACK_PROD_TOKEN
- á á áááአáá áá° ááŽáľ-áá¨ááť áŚáł ááá°ááŤáľ ááááľ (á áááľá áá˝ 4 ááľáĽ á á˛ááááááľ ááľáĽ á ááá°áá);DEPLOY_BACK_DEV_TOKEN
- á á áááአáá áá° á´á áá¨ááť áŚáł ááá°ááŤáľ ááľáá°áŤá˘
á¨áá°ááŤáľ áá°áľ ááá áĽá áśáľáľ áá á°á¨ááá˝á áŤáá áááĄ-
- á áĽá áá¨ááť ááľáĽ ááľáá ááááŁáľ áĽá áá°á;
- á á˛áľ á á°ááᣠááľá áá á ááááŽá á áĽá ááŤáŁ ááľáĽ áá¨áŤáá˝á ááŤááľ;
- á á áááŤá (dev / master) áá á áááľá¨áľ áá°ááááá á áŤáŁá˘ áá°ááŤáľ.
áá°ááľ á¨ááŁ
áŁá˘áŤ áááá
á Nginx á áŠá áľáŤááá á°áŞ ááľá¨á
áĽááá˛á áá° áá¨á¨áťá á°áá°ááᢠá Nginx á áŠá áá° ááŤáŁá˝á á¨áááŁáá áĽá á᪠áľáŤááá á°áŞ áááá áĽáť áááŤáᢠáá áá áá°áľ á Docker Registry áááá á°á¨á 5 áá á áľááľáá á¸áááááᢠá á´á áĽá ááŽáľ á á¨áŁá˘áá˝ ááľáĽ ááá áĽá áááľ áááá˝ á°ááłáłá ááá áá°áá á áá áľá˘
á¨á ááĽáŽá˝ á á˝á áłá áá˝ áĽááłáá˝á á áááŁááá˘
á°áá
áá°ááľ á¨ááŁ
á áá ááĽáŤáŞáŤ. ááá áŠá áá¤áá˝ á¨ááááŠáľ á áľá°áá áá° ááľ áááľ ááŤáŁá á°áŞ áááá /api/
- á¨áá ááŤáŁá áá á°áŞ áááá (áľááá
á áááá ááŤáŁ ááľáĽ ááá á°ááŁáŁáŞáá˝ áááá á ááŁá¸á /api/
).
áá¤áśá˝
á áá á¨áĽá áŁá˘áŤ helloworld.ru áĽá dev.helloworld.ru (prod- áĽá dev-environments, á á á°á) áá ááááľ á áá áľ.
á á á ááá ááá á áááŹá˝á á Flask áĽá Angular áĽáá´áľ áááááľ áĽááłááĽá á°áá¨áá áĽá á Github Actions ááľáĽ á¨á§á᧠ááľáá á áááááľ áááľáá áá°ááŤáľáŹáľ á áááá ááááááľ á°áá¨ááá˘
áá° áá¨ááťááš á¨áááľáąáľá á áááá˝ á áŽáą áĽáŁááááĄ-
ááá: hab.com