แแแแแแแแแแแแถแแแถแแทแแถแแธแแแขแผแขแแกแถแแแแแแพแแแแแปแแแแแพแแถแแแบแแถแแถแแขแแทแแแแแแแแถแแทแแแแแแแแแทแแแทแ แ แพแแแถแแแ
แแ
แแแแแแแถแ
แแแแแแแ แปแแแแแแแแแแถแแแถแแปแแแแแแทแแแแท แแทแแแแแแแแพแแ
แแ แ แแแแแแแแแแแถแแแแแแแขแแแแแแแแแแบแแพแแแแธแแทแแแแแถแขแแแธแแถแแขแแปแแแแแแแแแแแแ docker swarm clustering แแแแแถแแแแแ แแแแแแแแแถแแแแถแแแฝแแแแแแทแแแแแถแแแแแแแแพแแแถแแแถแแแถแแแแแแถแแแแแแพแแกแพแแแแแแแพแแแถแแแแแแแพแแแแแปแแแแแแแแแแแแแแฝแแ แแฟแโแแแโแแแแ แถแโแแแโแแถแโแ
แถแแโแขแถแแแแแแโแแแแโแขแแแโแแแแผแโแแถแโแแแโแ
แแโแแถโแแธแโแแแแแแ แแแแแแแธแแฝแแแทแแแแแถแขแแแธ CI/CD แแปแแแแแแแแพ docker swarm แ แพแแแแแแแแธแแธแแแทแแแแแถแขแแแธแแแแพแแแถแแแแแถแแขแแปแแแแแแแแแแถแ แขแแแโแแแโแแทแโแ
แถแแโแขแถแแแแแแโแแนแโแแถแโแขแถแโแแแแแโแแธโแแฝแโแขแถแ
โแแแแโแแ
โแแแแโแแธแแธแโแแแโแแปแแแแแทแแถแแ
แแแแแแแธ แก
แแแแแแแแแแแแถแแแแแแแแแแถแ แ แถแแแถแ แแแแแผแแแแแ แแแแแพแแแถแ CI/CD แฑแแแแถแแแฟแแแถแแแแแขแถแ แแแแพแแ แแถแแ แแแแแแแแแแฝแแแบแแทแแแแแผแแแแแพ Docker แแแ แแแแแถแแแแถแแแถแแแแแแแถแ แแแถแแแถแแปแแแแแถแแแแแแพแแกแพแแแแแแถแแแ แแแปแแแแถแ แแแพแ:
- แแแแแถแแแแแแแทแแแแแทแแถแแแแแขแถแ แแปแแ แทแแแแแถแ แแทแแแแแทแแแถแแแแแแถแแแถแแแ แแแแปแแแแทแแแแแ (แแแแแถแแถแแแทแ แแแแแผแแแถแแแทแแแแแพแแทแแแแทแ)
- แขแแแแขแแทแแแแแแแแถแแแปแแแแแทแแ แแแแแแพแแถแแแถแแฝแ Docker แแ (แ แแแแแ แแแปแแแแแแแแแถแแแแแแแแแถแแพแแกแพแ)
- แแแแแพแแแแแถแแแถแแแทแ แถแแแถแแแแแแแทแแแแถแแแแถแแแแแแแแแแ R&D
แ แแแแแถแแ แแถแแแแแแแแ แแแ แแทแแแแแแผแแแถแแแแแผแแแแแ แถแแแแแแ แแแแแแแถแแ MVP แแแแผแแแถแแแแแ แถแแแผแ แแถแแแแแแแ
- แแแถแแแธแแแ Intelยฎ X4 แ แแแฝแ 5650 แแถแแฝแ Debian (แแแถแแแธแแแแแถแแฅแแแแทแแแแฝแแแแแผแแแถแแขแแทแแแแแแแถแแแแแแแ)
- แแถแแขแแทแแแแแแแแแถแแแถแแปแแแแถแแแแแแฝแแแแแผแแแถแแขแแปแแแแแแ แแแแปแ C ++, Python3
- แงแแแแแแแถแแธแแธ 3 แแแแถแแแแแแแแแแพแ Kafka, Clickhouse, Airflow, Redis, Grafana, Postgresql, Mysql, โฆ
- แแแแแแแแแแถแแแแถแแแแ แแทแแแถแแแแแแแแถแแแถแแปแแถแ แแแแแกแแแแแแแถแแแแแแถแแแแแ แปแ แแทแแแถแแแแแ แแ
แแแแฝแแแฝแแแแแปแแ แแแแแแแแฝแแแแแผแแแแแ แถแแแถแ แแแแแผแแแแแแแแถแแแ แแแแถแแแแถแแแแแผแแแบแแถแแพแแแถแแแถแแปแแแแถแแแแแแฝแแแนแแแแแผแแแถแแแแแแแถแแแแแปแแแแทแแถแแถแแแแแแถ (CI/CD)แ
แแพแแแถแแแแแแแ แ แทแแแแแแกแพแแแแถแแแถแแแถแแธแแธแแธแแถแแแแแแแแ แแทแแแแแพแแ แแ แปแแแแแแแแถแแแฝแแแถแแถแแแแแแแแแ แแแแแแทแแธแแแแถแแแแแแฝแแแแแแแแผแแแถแแแแแแพแแกแพแแแ แแแแปแ C ++ แฌ Python แขแถแ แแแแผแแแถแแแถแแแฑแแแแแแพแแแแถแแแแถแแแทแแธแแถแ แแแพแแ แงแแถแ แแแแแแแปแแ แแแแแแฝแแแแ แแแแแพแแแแแ แแแแแแแแแแ แแแแแผแแแถแแ แแแแถแแแแแแผแแแถแแแแแแถแแแแแแพแ แ แพแแแแแแถแแแแแแแกแพแแแฝแแแถแแ แแพแแแถแแแธแแแแ แแแแแถแแแ แแแปแแแแแแแทแแแแแถแแ แแทแแธแแถแแแแแแแฝแแแแแแแแแแแแแผแแแถแแแแแพแแแพแแแบแ แแแแแแแพ CI แฏแแแถแแแแแขแถแ แแแแแทแแแแแทแแถแแแแแแแแแแแทแแธแแแแผแแแถแแ แแแแแ แแแทแแถแแถแแแแแแแแแทแแแแทแแแแแผแแแถแแแแแแพแ แแแผแแปแ py แแแแผแแแถแแแแกแพแแแธ requirement.txt แ แพแแแแแแปแแปแแถแแแถแแแขแแแแแแแแแผแแแถแแแแแพแแฝแแแถแแฝแ configs, scripts แแทแ แขแแแถแแฝแแแแทแแถแแถแแแแแแแทแแธแแ แแถแแแแแถแแแธแแแแ แแแแแถแแโแแ แแแแแแทแแธโแแแแผแโแแถแโแแพแโแแแแพแแแถแโแแถโแขแแแโแแแแพโแแทแแแแทแโแแแโแแแแถแโแแทแแแแทโแขแแแโแแแแแแแแแแ
Gitlab-CI แแแแผแแแถแแแแแพแแแพแแแถแแแแแแแแ CI/CD แ แแแแแแแแแแแแแพแแแ แแผแ แแแแ
แแถแแแ
แแถแแแแแแแแ gitlab-ci.yml แแพแแแ
แแผแ
แแแ
---
variables:
# ะผะธะฝะธะผะฐะปัะฝะฐั ะฒะตััะธั ะฆะะฃ ะฝะฐ ัะตัะฒะตัะฐั
, ะณะดะต ัะฐะทะฒะพัะฐัะธะฒะฐะตััั ะบะปะฐััะตั
CMAKE_CPUTYPE: "westmere"
DEBIAN: "MYREGISTRY:5000/debian:latest"
before_script:
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh && echo -e "Host *ntStrictHostKeyChecking nonn" > ~/.ssh/config
stages:
- build
- testing
- deploy
debug.debian:
stage: build
image: $DEBIAN
script:
- cd builds/release && ./build.sh
paths:
- bin/
- builds/release/bin/
when: always
release.debian:
stage: build
image: $DEBIAN
script:
- cd builds/release && ./build.sh
paths:
- bin/
- builds/release/bin/
when: always
## testing stage
tests.codestyle:
stage: testing
image: $DEBIAN
dependencies:
- release.debian
script:
- /bin/bash run_tests.sh -t codestyle -b "${CI_COMMIT_REF_NAME}_codestyle"
tests.debug.debian:
stage: testing
image: $DEBIAN
dependencies:
- debug.debian
script:
- /bin/bash run_tests.sh -e codestyle/test_pylint.py -b "${CI_COMMIT_REF_NAME}_debian_debug"
artifacts:
paths:
- run_tests/username/
when: always
expire_in: 1 week
tests.release.debian:
stage: testing
image: $DEBIAN
dependencies:
- release.debian
script:
- /bin/bash run_tests.sh -e codestyle/test_pylint.py -b "${CI_COMMIT_REF_NAME}_debian_release"
artifacts:
paths:
- run_tests/username/
when: always
expire_in: 1 week
## staging stage
deploy_staging:
stage: deploy
environment: staging
image: $DEBIAN
dependencies:
- release.debian
script:
- cd scripts/deploy/ &&
python3 createconfig.py -s $CI_ENVIRONMENT_NAME &&
/bin/bash install_venv.sh -d -r ../../requirements.txt &&
python3 prepare_init.d.py &&
python3 deploy.py -s $CI_ENVIRONMENT_NAME
when: manual
แแถแแฝแแฑแแแแแแแแแแถแแแแถแแถแแแฝแแแแแแปแแแแแถแแทแแแถแแแแแพแแแแแแแแแผแแแถแแขแแปแแแแแแ แแพแแผแแแถแแแแแแแถแแแแถแแแแแแแแแ แแแแแแแแแแแ แถแแแถแ แแแถแแแขแแแแแแผแแแถแแแแกแพแแแฝแ แ แพแแแทแแแถแแแแแแแแแแแแแแแแแแผแแแถแแแแแพแกแพแแ
แแแแแธแแถแแแแแแธแแแถแแแแแแแ แแแแปแแแถแแแถแแแธแแฝแแแแฝแแฑแแแ แถแแแขแถแแแแแแแแถแแแแแแแแแแแถแแแแแ แแแปแแแแแแถแแถแแแทแแแถแแแแแแปแแแนแแแทแแแทแแถแแขแแแธแแฝแแแถแแแ แแถแแแทแแแแแถแขแแแธแแฝแแแถแแธแแฝแแแแนแแ แแแถแแแแแ แแแพแ แ แพแแแแแแทแแแแแแถแแแแแแแแแแขแแแแแแแแแแแ แแแแปแแแนแแแถแแแแถแแแถแแแแ แทแแแแแปแแแถแแแแแแแขแแแแ แแแแแแถแแแทแแแแแแถแแแแถแแแแถแแแถแแแแแแแถแแแถแแแแแถแแแแแแถแแ แ แแแแแแธแแ
- แแแแแพแconfig.py - แแแแแพแแฏแแแถแ settings.ini แแถแแฝแแแนแแแถแแแแแแแแแถแแแถแแปแแ แแแแปแแแแทแแแแถแแแแแแแแแแแแถแแแแถแแแถแแแแแแแถแแแถแแแแแแแแแถแแ (แแถแแแแทแ แแถแแแแทแ แแถแแแแแพแแแแแ ... )
- install_venv.sh - แแแแแพแแแแทแแถแแถแแแทแแแแทแแแแแแถแแแแแถแแแถแแป py แแ แแแแปแแแแแถแแแแถแแแแฝแ แ แพแแ แแแแแแถแแ แแแถแแแธแแแแแธแ แแแแถแ
- แแแแ แ_init.d.py โ แแแแ แแแแแแแธแ start-stop แแแแแถแแแแแถแแแถแแแแแแแขแแแแพแแแแผ
- deploy.py - แแแแแ แแทแแ แถแแแแแแพแแแแถแแแถแแปแแแแธแ
แแแแแแแถแแถแแแแแแแแปแแแ แ แแแแถแแแแถแแแแแถแแแแถแแแแแผแแแถแแแแแฝแแแแแแถแแแแทแ แแทแแแถแแแแทแแแถแแปแแ แแถแแแแแแแแแถแแแถแแแแแแแแแถแแแแแทแแแแแ แแพแแถแแ แแแ แถแแแฝแแแแแแแแแแ (CentOS) แ แแถแแแแแแแแแแถแแแธแแแแแแแแถแแแถแแแแแแแถแแแแถแ 5 แแทแแแแถแแแธแแแทแแแแทแแ แแแฝแแแแแ แ แพแแแถแแถแแแแแแทแแถแแแแแแถแแแขแแแแขแแทแแแแแแ แแทแแขแแแแแถแแแแแแแพแแแแธแแถแแแแแแแทแ แแ แแถแแแแแแแฝแแแแแ แแแแปแแแแทแแถแแถแแแทแ แฌแแทแ แแถแแแแแแ แแนแแแแแถแแแถแแแถแแแถแแ แแ แแแแแแแแถแ แแแถแแแแถแแแแถแแถแแทแแขแถแ แแ แแฝแ แแแแแแปแแแถแแแแแพแแแแแแแถแแแถแแ ...
แแแแแแแธ II
แแผแ
แแแแ แ
แแแแแแแแแแแพแแแบแแถแแแแแแแแแแแขแแแ
แถแแแแแแแแถแแแถแแปแแถแ
แแแแแกแแแแธแแแแถแแถแ
แแแพแแแแแแทแแแแแผแแแถแแแทแแแแแถแแแ Dockerfiles แ แขแแแโแขแถแ
โแแแแแโแแ
แแถแแแแแแแแโแแถโแแแแแถแแโแแถแโแแถแแโแแแแแถแโแแ
โแแแทแแถแแถแโแแถแแแแถแแโแแถโแแผแแ
โแแแปแแแแแแ แแถแแแทแ
แแ
แแแแแแพแแแบแแพแแแแธแแถแแแแแแแถแแ
แแแแแแแ
แแแแปแแแแทแแถแแถแแแแแถแแแแถแแแพแแแแธแแถแแแแแแแถแแปแแแแแแถแแแถแแแแแแแปแแแถแแ
แแแแแแถแแ
แแถแแแแแนแแแแธ แขแถแ แแถแแ แแแแแแแถแ แแแพแแแแแแแแปแแแแแพแแแถแแแแแปแแแแแแแแถแแแแแถแ แแผแ แแถแแถแแแทแ แแ แแถแแแถแ แแแพแแแ แแแแปแแแแแถแแแถแแแแแแถแแแแแ แแ แฌแแทแแแแแแถแแแแแ แแแ แแแแแแแถแแแแแ servers แแแแปแแแถแแ แแแแแแแแพแแขแแปแแแแถแแฑแแแแพแแแแแพแแแถแ clusters แแถแ แแแพแแแ แแพ server แแธแแฝแแแ แ แแแแแแแแแถแแแแถแแแธแแฝแแแแแแผแแแแแถแ แแแแแถแแแธแแแแถ (แแทแแแแแผแแแถแแ แแแปแ แแแแแแแแแ แแแแปแแ แแแ แแแแแ)แ
แแแแถแแแแแถแแแแแแแแแแปแแแแแแแพแแแบแแแแแแแถแแแแแแพแ แ แพแแแพแแแทแแแถแแแถแ แแแพแแแแ
แแแแแถแแแแถแแ แถแแแแแแพแแแฟแแแถแแแปแ แแพแแแถแแแแแพแแแพแ Docker Swarm แแแแแถแแแแแถแแแถแแแแ แแทแแแถแแแแแแแแแแแแแถแแแแแแแแแแแแแแถแ แแฟแแแแแผแแแแแแพแแแถแแแแแพแแบแแแแแพแแขแแแแแแแแแแแแ แแทแแแแแถแแแแถแ แแแพแแแ แแพแแแถแแแธแแแแแธแ แแแแถแแ
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
kilqc94pi2upzvabttikrfr5d nop-test-1 Ready Active 19.03.2
jilwe56pl2zvabupryuosdj78 nop-test-2 Ready Active 19.03.2
j5a4yz1kr2xke6b1ohoqlnbq5 * nop-test-3 Ready Active Leader 19.03.2
แแแแแถแแแแแแแแแพแแแแแแถแแแฝแแ
$ docker network create --driver overlay --subnet 10.10.10.0/24 nw_swarm
แแแแแถแแแแ แแพแแแแแถแแ Gitlab-CI แแทแ Swarm nodes แแแแปแแแแแแแแแแแแแถแแแแแแถแแธแ
แแแแถแแแแแแแถแแแแธ CIแ แแถแแแแกแพแแแทแแแแถแแแแแแ แแถแแแแแแแขแแแแแแแแถแแ แแทแแแถแแแแกแพแแแแแถแแแแ Docker แแ
แแพแแแถแแแธแแแแแแแแถแ แแฝแโแแแ
แแแแแถแแแแ แแพแแแถแแแแแแแแแถแแแถแแแแแแพแ แแทแแแแแแแถแแแแแแ .gitlab-ci .yml แ
แแถแแแถแแแธแแแธแแแแแแแผแแแถแแแแแแแแแ .gitlab-ci .yml
## staging stage
deploy_staging:
stage: testing
before_script:
- echo "override global 'before_script'"
image: "REGISTRY:5000/docker:latest"
environment: staging
dependencies: []
variables:
DOCKER_CERT_PATH: "/certs"
DOCKER_HOST: tcp://10.50.173.107:2376
DOCKER_TLS_VERIFY: 1
CI_BIN_DEPENDENCIES_JOB: "release.centos.7"
script:
- mkdir -p $DOCKER_CERT_PATH
- echo "$TLSCACERT" > $DOCKER_CERT_PATH/ca.pem
- echo "$TLSCERT" > $DOCKER_CERT_PATH/cert.pem
- echo "$TLSKEY" > $DOCKER_CERT_PATH/key.pem
- docker stack deploy -c docker-compose.yml ${CI_ENVIRONMENT_NAME}_${CI_COMMIT_REF_NAME} --with-registry-auth
- rm -rf $DOCKER_CERT_PATH
when: manual
## stop staging stage
stop_staging:
stage: testing
before_script:
- echo "override global 'before_script'"
image: "REGISTRY:5000/docker:latest"
environment: staging
dependencies: []
variables:
DOCKER_CERT_PATH: "/certs"
DOCKER_HOST: tcp://10.50.173.107:2376
DOCKER_TLS_VERIFY: 1
script:
- mkdir -p $DOCKER_CERT_PATH
- echo "$TLSCACERT" > $DOCKER_CERT_PATH/ca.pem
- echo "$TLSCERT" > $DOCKER_CERT_PATH/cert.pem
- echo "$TLSKEY" > $DOCKER_CERT_PATH/key.pem
- docker stack rm ${CI_ENVIRONMENT_NAME}_${CI_COMMIT_REF_NAME}
# TODO: need check that stopped
when: manual
แแธแขแแแแแแแผแแแถแแแพ แขแแแแขแถแ แแพแแแพแแแถแแแผแแปแแแธแ (deploy_staging, stop_staging) แแแแผแแแถแแแแแแแแแ Pipelines แแแแแถแแแถแแแแแแแแถแแแแแแแ
แแแแแแแแแแแแผแแแแแถแแนแแแแแแแแถแแถ แ แพแแแถแแแแแแแแแแแฝแแแแแแแแแแแแถแแแ แแแแถแแแแแแ
แแแแปแแแแแแแฝแแแถแแขแถแแแแแแถแ ip แแแแฝแแแแ แแทแแ
แแแ แแแแแ แแนแแแแแผแแแถแแแถแ
แแแแแถแ แแแปแแแแแแผแ
แแแแถแแธแแแแแ
แแแ (แแแแแแฏแแแถแแแแแแแแ
แแถแแแแแแแแแแบแแผแ
แแแแถแแแแแถแแแแแแแถแแแขแแ) - แขแแแธแแแแแพแแ
แแแแถแแ แแพแแแถแแแแแแแถแแแแ (แ
แแแแแ) แแแแแแแพ docker-compose.ymlแแแแแทแแแแแถแขแแแธแแแแปแแแแแแแพแแ
docker-compose.yml
---
version: '3'
services:
userprop:
image: redis:alpine
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
celery_bcd:
image: redis:alpine
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
schedulerdb:
image: mariadb:latest
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: schedulerdb
MYSQL_USER: ****
MYSQL_PASSWORD: ****
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--explicit_defaults_for_timestamp=1']
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
celerydb:
image: mariadb:latest
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: celerydb
MYSQL_USER: ****
MYSQL_PASSWORD: ****
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
cluster:
image: $CENTOS7
environment:
- CENTOS
- CI_ENVIRONMENT_NAME
- CI_API_V4_URL
- CI_REPOSITORY_URL
- CI_PROJECT_ID
- CI_PROJECT_URL
- CI_PROJECT_PATH
- CI_PROJECT_NAME
- CI_COMMIT_REF_NAME
- CI_BIN_DEPENDENCIES_JOB
command: >
sudo -u myusername -H /bin/bash -c ". /etc/profile &&
mkdir -p /storage1/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME &&
cd /storage1/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME &&
git clone -b $CI_COMMIT_REF_NAME $CI_REPOSITORY_URL . &&
curl $CI_API_V4_URL/projects/$CI_PROJECT_ID/jobs/artifacts/$CI_COMMIT_REF_NAME/download?job=$CI_BIN_DEPENDENCIES_JOB -o artifacts.zip &&
unzip artifacts.zip ;
cd /storage1/$CI_COMMIT_REF_NAME/$CI_PROJECT_NAME/scripts/deploy/ &&
python3 createconfig.py -s $CI_ENVIRONMENT_NAME &&
/bin/bash install_venv.sh -d -r ../../requirements.txt &&
python3 prepare_init.d.py &&
python3 deploy.py -s $CI_ENVIRONMENT_NAME"
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
tty: true
stdin_open: true
networks:
nw_swarm:
networks:
nw_swarm:
external: true
แแ แแธแแแแขแแแแขแถแ แแพแแแพแแแถแแแถแแแถแแปแแแแผแแแถแแแแแแถแแแแแแแแแแถแแแฝแ (nw_swarm) แ แพแแแถแแแแแแถแแแแแแถแแ แแทแแแ แแแ
แแแถแแแถแแแแแแแแแ (แแแขแแแแพ redis, mysql) แแแแผแแแถแแแแแแแ แแแแธแแแแปแแแผแแ แแแแแถแแแถแแแแแถแแแแแแฝแ (แแ แแแแปแแแแแแแ แแทแแแแแแแแแแถแแแแแแฝแแแแแผแแแถแแแแแ แแแแถแแแแถแแแแ)แ แแแแถแแแแถแแแแแถแแแถแแแแแแแถแแแแ แแแแแแแแแแแพแแแพแแแ แแผแ แแถแแถแแแแแแผแ CMD แแ แแแแปแแแผแแแถแแแแแแถแแแแแแแแ แแถแแแแแแแแแแแแฝแแแแแแแพแ แ แพแแแถแแผแแ แแถแแขแแปแแแแแแถแแแแแแแแแทแแแปแแแแแถแแธแแถแแแถแแแแแแแถแแแแแแถแแแทแแแแแถแแ แแแแปแแแแแแแแธ XNUMX แแแแแแ แแแแปแแแนแแแผแแแแแแถแแแแธแแถแแแปแแแแแถแ
- git แแแแผแ... - แแแฝแแแถแแฏแแแถแแแแแแแแผแแแถแแแพแแแแธแแถแแแแแแแถแ (createconfig.py, install_venv.sh แแแ)
- curl... && แแแแแถ... - แแถแแแแแทแแแแแแถแแแแแปแแปแแถแแแแแแพแ (แงแแแแแแแแแพแแแแถแแแแแแแถแแ แแแแแ)
แแถแแแแแ แถแแแแฝแแแแแแแแแทแแแถแแแแถแแแทแแแแแถแ แแแถแแแถแแปแแแแแถแแ แแแปแ แแแแแถแแแแแ แแแแแแแทแแขแถแ แ แผแแแแแพแแถแแแธแแแแแแทแแธแแปแแแแแแแแขแแแแขแแทแแแแแแแ แแพแแแแแแแแถแแแแแ แถแแแแแแแแแแพแแแแผแแแแธแแแแ แแแถแแแผแ แแแแแ
แแ แแแแปแ .gitlab-ci.yml แแแแแถแแแแธแแถแแแแแแแถแแแแแแปแแ แแแแแ แแพแแแแแแแแแแแแถแแแแแแถแแแถแแแแแแแถแแแปแแแแแถแ (แแแแแ แแแแแแแแแแนแแแ แแแแพแแ แแ แปแแแแแแแแถแแแแแถแแแแแแแแ แแถแแแแแแแแแแแแแแถแแแปแแแแแ (แแแแแพแแฏแแแถแแแแแแแแ แแถแแแแแแแแ nginx แแแแธแแแแแ แแถแแแแแผแ /etc/nginx/conf แ d/${CI_COMMIT_REF_NAME}.conf) - แแพแแแผแ docker-compose-nginx.yml)
- docker stack deploy -c docker-compose-nginx.yml ${CI_ENVIRONMENT_NAME} --with-registry-auth
docker-compose-nginx.yml
---
version: '3'
services:
nginx:
image: nginx:latest
environment:
CI_COMMIT_REF_NAME: ${CI_COMMIT_REF_NAME}
NGINX_CONFIG: |-
server {
listen 8080;
server_name staging_${CI_COMMIT_REF_NAME}_cluster.dev;
location / {
proxy_pass http://staging_${CI_COMMIT_REF_NAME}_cluster:8080;
}
}
server {
listen 5555;
server_name staging_${CI_COMMIT_REF_NAME}_cluster.dev;
location / {
proxy_pass http://staging_${CI_COMMIT_REF_NAME}_cluster:5555;
}
}
volumes:
- /tmp/staging/nginx:/etc/nginx/conf.d
command:
/bin/bash -c "echo -e "$$NGINX_CONFIG" > /etc/nginx/conf.d/${CI_COMMIT_REF_NAME}.conf;
nginx -g "daemon off;";
/etc/init.d/nginx reload"
ports:
- 8080:8080
- 5555:5555
- 3000:3000
- 443:443
- 80:80
deploy:
replicas: 1
placement:
constraints: [node.id == kilqc94pi2upzvabttikrfr5d]
restart_policy:
condition: none
networks:
nw_swarm:
networks:
nw_swarm:
external: true
แแ แแพแแปแแแแแผแแแแขแแทแแแแแแ แแแแพแแ แแ แปแแแแแแแแถแ /etc/hosts; แ แแแแแแแแแแแแถ url แแ nginxแ
10.50.173.106 staging_BRANCH-1831_cluster.dev
แแผแ
แแแแ แแถแแแถแแแแแแแถแแแแแแปแแแแแถแแแแถแแแถแ
แแแแแกแแแแแแผแแแถแแขแแปแแแแ แ แพแแฅแกแผแแแแแขแแแแขแแทแแแแแแแขแถแ
แแแแพแแแถแแแฝแแแถแแแแปแแ
แแแฝแแแถแแฝแแแแแแแแแแแแแถแแแแพแแแแธแแทแแทแแแแแพแแแทแ
แแ
แแถแแแแแแแฝแแแแ
แแแแแโแขแแถแแ:
- แแแแแแถแแแถแแปแแแแแแพแแแถแแแแถแแแแ
- แแถแแแแแแถแแ Dockerfile แแธแแฝแแ
- แแแแพแแแแแถแแแแแแแแแปแแแทแ แแแแแแแแแแแแแแแแทแแ แแแแปแแแแ
- แแแแแถแแแแแแถแแแแถแแแแแถแแแแแแ (แแถแแถแแแแแพแแแแแแแแถแแแแผแ แแแแปแแขแแแแแ)
- แแแแแแแแถแแแแแฝแแแทแแทแแแแแถแแแแแแแผแแแถแแแแแแแถแ
- ...
แแผแแขแแแปแแแถแแทแแแแแแแแถแแ
แแแแแ: www.habr.com