เจเจจเจฒเจพเจเจจ เจตเฉเจกเฉเจ เจธเจฎเจเจฐเฉ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจชเฉเจฐเจฃเจพเจฒเฉ เจเจฟเจธ 'เจคเฉ เจ
เจธเฉเจ เจเฉฐเจฎ เจเจฐ เจฐเจนเฉ เจนเจพเจ เจเฉฑเจ เจฌเฉฐเจฆ เจตเจชเจพเจฐเจ เจตเจฟเจเจพเจธ เจนเฉ เจ
เจคเฉ เจคเจเจจเฉเจเฉ เจคเฉเจฐ 'เจคเฉ เจฎเจฒเจเฉเจ
เจค เจ
เจคเฉ เจเจชเจจ เจธเฉเจฐเจธ เจญเจพเจเจพเจ เจฆเจพ เจเฉฑเจ เจฌเจนเฉ-เจเฉฐเจชเฉเจจเฉเจเจ เจเจฒเฉฑเจธเจเจฐ เจนเฉเฅค เจเจธ เจฒเฉเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเจพ เจเจฆเฉเจธเจผ เจเฉฑเจ เจธเฉเจฎเจค เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจธเจพเจกเฉเจเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฆเฉ เจธเจฅเจพเจชเจฟเจค เจตเจฐเจเจซเจฒเฉ เจตเจฟเฉฑเจ เจตเจฟเจเจจ เจชเจพเจ เจฌเจฟเจจเจพเจ เจเฉฑเจ เจธเจเฉเจเจฟเฉฐเจ เจธเจพเจเจ เจฒเจ เจกเฉเจเจฐ เจธเจตเฉเจฐเจฎ เจเจฒเฉฑเจธเจเจฐเจฟเฉฐเจ เจธเจฟเจธเจเจฎ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจจเจพ เจนเฉเฅค เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจฟเจ เจฌเจฟเจฐเจคเจพเจเจค เจฆเฉ เจนเจฟเฉฑเจธเจฟเจเจ เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจฟเจ เจนเฉเฅค เจชเจนเจฟเจฒเจพ เจญเจพเจ เจกเฉเจเจฐ เจธเจตเฉเจฎ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจธเฉเจเจ / เจธเฉเจกเฉ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉ, เจ
เจคเฉ เจฆเฉเจเจพ เจเจธเจฆเฉ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจฟเจนเฉเฉ เจฒเฉเจ เจชเจนเจฟเจฒเฉ เจญเจพเจ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจจเจนเฉเจ เจฐเฉฑเจเจฆเฉ เจเจน เจธเฉเจฐเฉฑเจเจฟเจ
เจค เจขเฉฐเจ เจจเจพเจฒ เจฆเฉเจเฉ เจญเจพเจ เจตเจฟเฉฑเจ เจเจพ เจธเจเจฆเฉ เจนเจจเฅค
เจญเจพเจ I
เจตเจพเจชเจธ เจฆเฉเจฐ, เจฆเฉเจฐ เจฆเฉ เจธเจพเจฒ เจตเจฟเฉฑเจ, เจเจฟเฉฐเจจเฉ เจเจฒเจฆเฉ เจนเฉ เจธเจเฉ เจธเฉเจเจ / เจธเฉเจกเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจธเจฅเจพเจชเจค เจเจฐเจจเจพ เจเจผเจฐเฉเจฐเฉ เจธเฉ. เจธเจผเจฐเจคเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจเจน เจธเฉ เจเจฟ เจกเฉเจเจฐ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจพ เจเฉเจคเฉ เจเจพเจตเฉ เจคเจพเจเจจเจพเจคเฉ เจฒเจ เจเจ เจเจพเจฐเจจเจพเจ เจเจฐเจเฉ เจตเจฟเจเจธเจค เจนเจฟเฉฑเจธเฉ:
- เจเจคเจชเจพเจฆเจจ เจตเจฟเฉฑเจ เจญเจพเจเจพเจ เจฆเฉ เจตเจงเฉเจฐเฉ เจญเจฐเฉเจธเฉเจฎเฉฐเจฆ เจ เจคเฉ เจธเจฅเจฟเจฐ เจธเฉฐเจเจพเจฒเจจ เจฒเจ (เจเฉ เจเจฟ เจ เจธเจฒ เจตเจฟเฉฑเจ, เจตเจฐเจเฉเจ เจฒเจพเจเจเฉเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจจเจพ เจเจฐเจจ เจฆเฉ เจเจผเจฐเฉเจฐเจค เจนเฉ)
- เจชเฉเจฐเจฎเฉเฉฑเจ เจกเจฟเจตเฉเจฒเจชเจฐ เจกเฉเจเจฐ เจจเจพเจฒ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเจจเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจธเจจ (เจ เจเฉเจฌ, เจชเจฐ เจเจน เจเจธ เจคเจฐเฉเจนเจพเจ เจธเฉ)
- เจเฉเจ เจ เจคเฉ เจตเจฟเจเจพเจธ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฆเฉ เจตเจฟเจเจพเจฐเจงเจพเจฐเจ เจตเจฟเจเจพเจฐเจพเจ เจฆเฉ เจ เจจเฉเจธเจพเจฐ
MVP เจฒเจ เจฌเฉเจจเจฟเจเจฆเฉ เจขเจพเจเจเจพ, เจธเจเฉเจ เจ เจคเฉ เจ เฉฐเจฆเจพเจเจผเจจ เจธเจผเฉเจฐเฉเจเจคเฉ เจฒเฉเฉเจพเจ เจจเฉเฉฐ เจเจธ เจคเจฐเฉเจนเจพเจ เจชเฉเจธเจผ เจเฉเจคเจพ เจเจฟเจ เจธเฉ:
- เจกเฉเจฌเฉเจ เจจ เจฆเฉ เจจเจพเจฒ 4 Intelยฎ X5650 เจธเจฐเจตเจฐ (เจเฉฑเจ เจนเฉเจฐ เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจฎเจธเจผเฉเจจ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจตเจฟเจเจธเจค เจนเฉ)
- เจเจชเจฃเฉ เจเจธเจเจฎ เจญเจพเจเจพเจ เจฆเจพ เจตเจฟเจเจพเจธ C++, Python3 เจตเจฟเฉฑเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ
- เจฎเฉเฉฑเจ 3rd เจชเจพเจฐเจเฉ เจเฉเจฒ เจตเจฐเจคเฉ เจเจ: เจเจพเจซเจเจพ, เจเจฒเจฟเจเจนเจพเจเจธ, เจเจ เจฐเจซเจฒเฉ, เจฐเฉเจกเจฟเจธ, เจเฉเจฐเจพเจซเจพเจจเจพ, เจชเฉเจธเจเจเฉเจฐเฉเจธเจเจฟเจฒ, เจฎเจพเจเจเจธเจเจเจฒ, ...
- เจกเฉเจฌเฉฑเจ เจ เจคเฉ เจฐเฉเจฒเฉเจเจผ เจฒเจ เจตเฉฑเจเจฐเฉ เจคเฉเจฐ 'เจคเฉ เจเฉฐเจชเฉเจจเฉเจเจ เจฌเจฃเจพเจเจฃ เจ เจคเฉ เจเฉเจธเจ เจเจฐเจจ เจฒเจ เจชเจพเจเจชเจฒเจพเจเจจเจพเจ
เจธเจผเฉเจฐเฉเจเจคเฉ เจชเฉเจพเจ 'เจคเฉ เจธเฉฐเจฌเฉเจงเจฟเจค เจเฉเจคเฉ เจเจพเจฃ เจตเจพเจฒเฉ เจชเจนเจฟเจฒเฉ เจธเจตเจพเจฒเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจเจน เจนเฉ เจเจฟ เจเจฟเจธเฉ เจตเฉ เจตเจพเจคเจพเจตเจฐเจฃ (CI / CD) เจตเจฟเฉฑเจ เจเจธเจเจฎ เจเฉฐเจชเฉเจจเฉเจเจเจธ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจคเจพเจเจจเจพเจค เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค
เจ เจธเฉเจ เจคเฉเจเฉ-เจงเจฟเจฐ เจฆเฉ เจญเจพเจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจฃเจพเจฒเฉเจเจค เจคเฉเจฐ 'เจคเฉ เจธเจฅเจพเจชเจค เจเจฐเจจ เจ เจคเฉ เจเจนเจจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจฃเจพเจฒเฉเจเจค เจคเฉเจฐ 'เจคเฉ เจ เจชเจกเฉเจ เจเจฐเจจ เจฆเจพ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจนเฉเฅค C++ เจเจพเจ Python เจตเจฟเฉฑเจ เจตเจฟเจเจธเจค เจเจธเจเจฎ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเจ เจคเจฐเฉเจเจฟเจเจ เจจเจพเจฒ เจคเฉเจจเจพเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ: เจธเจฟเจธเจเจฎ เจชเฉเจเฉเจ เจฌเจฃเจพเจเจฃเจพ, เจเจนเจจเจพเจ เจจเฉเฉฐ เจฌเจฟเจฒเจ เจเจฟเฉฑเจคเจฐเจพเจ เจฆเฉ เจฐเจฟเจชเฉเจเจผเจเจฐเฉ เจตเจฟเฉฑเจ เจญเฉเจเจฃเจพ เจ เจคเฉ เจซเจฟเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจธเจฐเจตเจฐเจพเจ เจเฉฑเจคเฉ เจเฉฐเจธเจเจพเจฒ เจเจฐเจจเจพเฅค เจเจฟเจธเฉ เจ เจฃเจเจพเจฃ เจเจพเจฐเจจ เจเจฐเจเฉ, เจเฉฑเจ เจนเฉเจฐ เจคเจฐเฉเจเจพ เจเฉเจฃเจฟเจ เจเจฟเจ เจธเฉ, เจ เจฐเจฅเจพเจค: CI เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ, เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเจเจเจผเฉเจเจฟเจเจเฉเจฌเจฒ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจเฉฐเจชเจพเจเจฒ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเฉฑเจ เจตเจฐเจเฉเจ เจฒ เจชเฉเจฐเฉเจเฉเจเจ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจฃเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ, py เจฎเฉเจกเฉเจเจฒ เจจเฉเฉฐ requirements.txt เจคเฉเจ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจเจน เจธเจพเจฐเฉเจเจ เจเจฒเจพเจเฉเจฐเจฟเจคเฉเจเจ เจธเฉฐเจฐเจเจจเจพเจตเจพเจ, เจธเจเฉเจฐเจฟเจชเจเจพเจ เจ เจคเฉ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเฉ เจจเจพเจฒ เจญเฉเจเฉเจเจ เจเจพเจเจฆเฉเจเจ เจนเจจเฅค เจธเจฐเจตเจฐเจพเจ เจฒเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจตเจพเจคเจพเจตเจฐเจฃ เจฆเฉ เจจเจพเจฒ. เจ เฉฑเจเฉ, เจชเฉเจฐเจธเจผเจพเจธเจ เจฆเฉ เจ เจงเจฟเจเจพเจฐเจพเจ เจคเฉเจ เจฌเจฟเจจเจพเจ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจตเจฐเจเฉเจ เจฒ เจเจชเจญเฉเจเจคเจพ เจตเจเฉเจ เจฒเจพเจเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
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
เจเจน เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเจฟ เจ เจธเฉเจเจฌเจฒเฉ เจ เจคเฉ เจเฉเจธเจเจฟเฉฐเจ เจเจธเจฆเฉ เจเจชเจฃเฉ เจเจฟเฉฑเจคเจฐ 'เจคเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจเจฟเฉฑเจฅเฉ เจธเจพเจฐเฉ เจฒเฉเฉเฉเจเจฆเฉ เจธเจฟเจธเจเจฎ เจชเฉเจเฉเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจธเจฅเจพเจชเจฟเจค เจเฉเจคเฉ เจเจพ เจเฉเฉฑเจเฉ เจนเจจ เจ เจคเฉ เจนเฉเจฐ เจธเฉเจเจฟเฉฐเจเจพเจ เจเฉเจคเฉเจเจ เจเจเจเจ เจนเจจ.
เจนเจพเจฒเจพเจเจเจฟ เจจเฉเจเจฐเฉเจเจ เจตเจฟเฉฑเจ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจนเจฐ เจเฉฑเจ เจธเจเฉเจฐเจฟเจชเจ เจเจชเจฃเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจฆเจฟเจฒเจเจธเจช เจนเฉ, เจชเจฐ เจฌเฉเจธเจผเฉฑเจ เจฎเฉเจ เจเจนเจจเจพเจ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจจเจนเฉเจ เจเจฐเจพเจเจเจพเฅค เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจนเจฐเฉเจ เจฆเฉ เจตเจฐเจฃเจจ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจธเจฎเจพเจ เจฒเฉฑเจเฉเจเจพ เจ เจคเฉ เจเจน เจฒเฉเจ เจฆเจพ เจเจฆเฉเจธเจผ เจจเจนเฉเจ เจนเฉเฅค เจฎเฉเจ เจธเจฟเจฐเจซ เจเจธ เจคเฉฑเจฅ เจตเฉฑเจฒ เจคเฉเจนเจพเจกเจพ เจงเจฟเจเจจ เจเจฟเฉฑเจเจพเจเจเจพ เจเจฟ เจคเฉเจจเจพเจคเฉ เจชเฉเจพเจ เจตเจฟเฉฑเจ เจเจพเจฒเจฟเฉฐเจ เจธเจเฉเจฐเจฟเจชเจเจพเจ เจฆเจพ เจเฉฑเจ เจเฉเจฐเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉ:
- createconfig.py - เจ เจเจฒเฉ เจคเฉเจจเจพเจคเฉ (เจชเฉเจฐเจต-เจเจคเจชเจพเจฆเจจ, เจเจคเจชเจพเจฆเจจ, เจเฉเจธเจเจฟเฉฐเจ, ...) เจฒเจ เจตเฉฑเจ-เจตเฉฑเจ เจตเจพเจคเจพเจตเจฐเจฃเจพเจ เจตเจฟเฉฑเจ เจเฉฐเจชเฉเจจเฉเจเจ เจธเฉเจเจฟเฉฐเจเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ settings.ini เจซเจพเจเจฒ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค
- install_venv.sh - เจเฉฑเจ เจเจพเจธ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจตเจฟเฉฑเจ py เจญเจพเจเจพเจ เจฒเจ เจเฉฑเจ เจตเจฐเจเฉเจ เจฒ เจตเจพเจคเจพเจตเจฐเจฃ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจฐเจฟเจฎเฉเจ เจธเจฐเจตเจฐเจพเจ เจคเฉ เจจเจเจฒ เจเจฐเจฆเจพ เจนเฉ
- เจคเจฟเจเจฐเฉ_init.d.py โ เจเฉเจเจชเจฒเฉเจ เจฆเฉ เจเจงเจพเจฐ 'เจคเฉ เจเฉฐเจชเฉเจจเฉเจเจ เจฒเจ เจธเจเจพเจฐเจ-เจธเจเจพเจช เจธเจเฉเจฐเจฟเจชเจเจพเจ เจคเจฟเจเจฐ เจเจฐเจฆเจพ เจนเฉ
- deploy.py - เจจเจตเฉเจ เจญเจพเจเจพเจ เจจเฉเฉฐ เจเฉฐเจชเฉเจเจผ เจ เจคเฉ เจฐเฉเจธเจเจพเจฐเจ เจเจฐเจฆเจพ เจนเฉ
เจธเจฎเจพเจ เจฌเฉเจค เจเจฟเจเฅค เจธเจเฉเจเจฟเฉฐเจ เจชเฉเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจต-เจเจคเจชเจพเจฆเจจ เจ เจคเฉ เจเจคเจชเจพเจฆเจจ เจฆเฉเจเจฐเจพ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจธเฉ. เจเฉฑเจ เจนเฉเจฐ เจตเฉฐเจก (CentOS) 'เจคเฉ เจเจคเจชเจพเจฆ เจฒเจ เจธเจฎเจฐเจฅเจจ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจเฅค 5 เจนเฉเจฐ เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจญเฉเจคเจฟเจ เจธเจฐเจตเจฐ เจ เจคเฉ เจเฉฑเจ เจฆเจฐเจเจจ เจตเจฐเจเฉเจ เจฒ เจธเจฐเจตเจฐ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจเจเฅค เจ เจคเฉ เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจ เจคเฉ เจเฉเจธเจเจฐเจพเจ เจฒเจ เจเฉฐเจฎเจเจพเจเฉ เจธเจฅเจฟเจคเฉ เจฆเฉ เจเฉฑเจ เจเจพเจ เจเฉฑเจ เจจเฉเฉเฉ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ เจเจชเจฃเฉ เจเจพเจฐเจเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจเจพ เจตเจงเฉเจฐเฉ เจฎเฉเจธเจผเจเจฒ เจนเฉเฉฐเจฆเจพ เจเจฟเจเฅค เจเจธ เจธเจฎเฉเจ, เจเจน เจธเจชเฉฑเจธเจผเจ เจนเฉ เจเจฟเจ เจเจฟ เจเจธเจฆเฉ เจฌเจฟเจจเจพเจ เจเจฐเจจเจพ เจ เจธเฉฐเจญเจต เจธเฉ ...
เจญเจพเจ II
เจเจธ เจฒเจ, เจธเจพเจกเจพ เจเจฒเฉฑเจธเจเจฐ เจเฉเจ เจฆเจฐเจเจจ เจตเฉฑเจเจฐเฉ เจนเจฟเฉฑเจธเจฟเจเจ เจฆเฉ เจเฉฑเจ เจธเจผเจพเจจเจฆเจพเจฐ เจชเฉเจฐเจฃเจพเจฒเฉ เจนเฉ เจเฉ เจกเฉเจเจฐเจซเจพเจเจฒเจพเจ เจฆเฉเจเจฐเจพ เจตเจฐเจฃเจจ เจจเจนเฉเจ เจเฉเจคเฉ เจเจ เจนเฉเฅค เจคเฉเจธเฉเจ เจเจธเจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเฉฑเจ เจเจพเจธ เจตเจพเจคเจพเจตเจฐเจฃ เจฒเจ เจคเฉเจจเจพเจคเฉ เจฒเจ เจธเฉฐเจฐเจเจฟเจค เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจธเจพเจกเจพ เจเฉฐเจฎ เจชเฉเจฐเจต-เจฐเจฟเจฒเฉเจเจผ เจเฉเจธเจเจฟเฉฐเจ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจธเจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจธเจเฉเจเจฟเฉฐเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเจฟเฉฑเจ เจคเฉเจจเจพเจค เจเจฐเจจเจพ เจนเฉเฅค
เจธเจฟเจงเจพเจเจคเจ เจคเฉเจฐ 'เจคเฉ, เจเฉฑเจเฉ เจธเจฎเฉเจ เจเฉฑเจฒ เจฐเจนเฉ เจเจ เจเจฒเฉฑเจธเจเจฐ เจนเฉ เจธเจเจฆเฉ เจนเจจ: เจเจฟเฉฐเจจเฉ เจเฉฐเจฎ เจฎเฉเจเฉฐเจฎเจฒ เจนเฉ เจเฉเฉฑเจเฉ เจนเจจ เจเจพเจ เจฎเฉเจเฉฐเจฎเจฒ เจนเฉเจฃ เจฆเฉ เจจเฉเฉเฉ เจนเจจเฅค เจธเจพเจกเฉ เจจเจฟเจชเจเจพเจฐเฉ 'เจคเฉ เจธเจฐเจตเจฐเจพเจ เจฆเฉ เจธเจฎเจฐเฉฑเจฅเจพ เจธเจพเจจเฉเฉฐ เจนเจฐเฉเจ เจธเจฐเจตเจฐ 'เจคเฉ เจเจ เจเจฒเฉฑเจธเจเจฐ เจเจฒเจพเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉ เจนเฉเฅค เจนเจฐเฉเจ เจธเจเฉเจเจฟเฉฐเจ เจเจฒเฉฑเจธเจเจฐ เจจเฉเฉฐ เจ เจฒเฉฑเจ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ (เจชเฉเจฐเจเจพเจ, เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ, เจเจฆเจฟ เจตเจฟเฉฑเจ เจเฉเจ เจเฉฐเจเจฐเจธเฉเจเจธเจผเจจ เจจเจนเฉเจ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ)เฅค
เจธเจพเจกเจพ เจธเจญ เจคเฉเจ เจเฉเจฎเจคเฉ เจธเจฐเฉเจค เจธเจพเจกเจพ เจธเจฎเจพเจ เจนเฉ, เจ เจคเฉ เจธเจพเจกเฉ เจเฉเจฒ เจเจธเจฆเจพ เจฌเจนเฉเจคเจพ เจนเจฟเฉฑเจธเจพ เจจเจนเฉเจ เจธเฉเฅค
เจเฉฑเจ เจคเฉเจเจผ เจธเจผเฉเจฐเฉเจเจค เจฒเจ, เจ เจธเฉเจ เจเจธเจฆเฉ เจธเจพเจฆเจเฉ เจ เจคเฉ เจเจฐเจเฉเจเฉเจเจเจฐ เจฒเจเจเจคเจพ เจฆเฉ เจเจพเจฐเจจ เจกเฉเจเจฐ เจธเจตเฉเจฐเจฎ เจจเฉเฉฐ เจเฉเจฃเจฟเจ เจนเฉเฅค เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจเฉ เจ เจธเฉเจ เจเฉเจคเจพ เจเจน เจฐเจฟเจฎเฉเจ เจธเจฐเจตเจฐเจพเจ 'เจคเฉ เจเฉฑเจ เจฎเฉเจจเฉเจเจฐ เจ เจคเฉ เจเจ เจจเฉเจก เจฌเจฃเจพเจเจฃเจพ เจธเฉ:
$ 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
เจ
เฉฑเจเฉ, เจ
เจธเฉเจ CI เจคเฉเจ เจจเฉเจกเจพเจ เจฆเฉ เจฐเจฟเจฎเฉเจ เจเฉฐเจเจฐเฉเจฒ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจเจฟเจเจฒเฉเจฌ-เจธเฉเจเจ เจ
เจคเฉ เจธเจตเฉเจฐเจฎ เจจเฉเจกเจธ เจจเฉเฉฐ เจเฉเฉเจฟเจ: เจธเจฐเจเฉเจซเจฟเจเฉเจ เจธเจฅเจพเจชเจค เจเจฐเจจเจพ, เจเฉเจชเจค เจตเฉเจฐเฉเจเจฌเจฒ เจธเฉเฉฑเจ เจเจฐเจจเจพ, เจ
เจคเฉ เจเฉฐเจเจฐเฉเจฒ เจธเจฐเจตเจฐ 'เจคเฉ เจกเฉเจเจฐ เจธเฉเจตเจพ เจธเจฅเจพเจชเจค เจเจฐเจจเจพเฅค เจเจน เจตเจพเจฒเจพ
เจ เฉฑเจเฉ, เจ เจธเฉเจ .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) เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเฉเจคเฉ เจเจ เจนเจจ, เจเจฟเจธ เจฒเจ เจฆเจธเจคเฉ เจเจพเจฐเจตเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค
เจธเจเฉเจ เจจเจพเจฎ เจธเจผเจพเจเจพ เจฆเฉ เจจเจพเจฎ เจจเจพเจฒ เจฎเฉเจฒ เจเจพเจเจฆเจพ เจนเฉ เจ
เจคเฉ เจเจน เจตเจฟเจฒเฉฑเจเจฃเจคเจพ เจเจพเจซเจผเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉเฅค เจธเจเฉเจ เจตเจฟเฉฑเจ เจธเฉเจตเจพเจตเจพเจ เจตเจฟเจฒเฉฑเจเจฃ เจเจเจชเฉ เจชเจคเฉ, เจ
เจคเฉ เจชเฉเจฐเจเจพเจ, เจกเจพเจเจฐเฉเจเจเจฐเฉเจเจ, เจเจฆเจฟ เจชเฉเจฐเจพเจชเจค เจเจฐเจฆเฉเจเจ เจนเจจเฅค เจ
เจฒเฉฑเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ, เจชเจฐ เจธเจเฉเจ เจคเฉเจ เจธเจเฉเจ เจคเฉฑเจ เจเฉฑเจเฉ เจเจฟเจนเจพ (เจเจฟเจเจเจเจฟ เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒ เจธเจพเจฐเฉ เจธเจเฉเจ เจฒเจ เจเฉฑเจเฉ เจเจฟเจนเฉ เจนเฉ) - เจเฉ เจ
เจธเฉเจ เจเจพเจนเฉเฉฐเจฆเฉ เจธเฉเฅค เจ
เจธเฉเจ เจธเจเฉเจ (เจเจฒเฉฑเจธเจเจฐ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจคเจพเจเจจเจพเจค เจเจฐเจฆเฉ เจนเจพเจ เจกเฉเจเจฐ-เจเฉฐเจชเฉเจเจผ.เจเจ.เจเจฎ.เจเจฒ., เจเฉ เจธเจพเจกเฉ เจเจฒเฉฑเจธเจเจฐ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค
เจกเฉเจเจฐ-เจเฉฐเจชเฉเจเจผ.เจเจ.เจเจฎ.เจเจฒ.
---
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 เจจเฉเฉฐ เจชเจพเจธ เจเจฐเจจ เจตเจฐเจเจพ เจฒเฉฑเจเจฆเจพ เจนเฉ เจ เจคเฉ, เจเจฎ เจคเฉเจฐ 'เจคเฉ, เจญเจพเจ I เจตเจฟเฉฑเจ เจตเจฐเจฃเจฟเจค เจคเฉเจจเจพเจคเฉ เจจเจพเจฒเฉเจ เจ เจฎเจฒเฉ เจคเฉเจฐ 'เจคเฉ เจตเฉฑเจเจฐเจพ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจฎเฉเจ เจ เฉฐเจคเจฐเจพเจ เจจเฉเฉฐ เจเจเจพเจเจฐ เจเจฐเจพเจเจเจพ:
- git เจเจฒเฉเจจ... - เจคเฉเจจเจพเจค เจเจฐเจจ เจฒเจ เจฒเฉเฉเฉเจเจฆเฉเจเจ เจซเจพเจเจฒเจพเจ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ (createconfig.py, install_venv.sh, เจเจฆเจฟ)
- เจเจฐเจฒ... && เจ เจจเจเจผเจฟเจช... - เจฌเจฟเจฒเจก เจเจฐเจเฉเจซเฉเจเจเจธ เจจเฉเฉฐ เจกเจพเจเจจเจฒเฉเจก เจ เจคเฉ เจ เจจเจเจผเจฟเจช เจเจฐเฉ (เจเฉฐเจชเจพเจเจฒ เจเฉเจคเฉเจเจ เจธเจนเฉเจฒเจคเจพเจ)
เจเฉฑเจฅเฉ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจ เจเฉ เจคเฉฑเจ เจ เจฃเจตเจฐเจฃเจฟเจค เจธเจฎเฉฑเจธเจฟเจ เจนเฉ: เจเฉฐเจชเฉเจจเฉเจเจ เจเจฟเจจเฉเจนเจพเจ เจเฉเจฒ เจตเฉเฉฑเจฌ เจเฉฐเจเจฐเจซเฉเจธ เจนเฉ, เจกเจฟเจตเฉเจฒเจชเจฐเจพเจ เจฆเฉ เจฌเฉเจฐเจพเจเจเจผเจฐเจพเจ เจคเฉเจ เจชเจนเฉเฉฐเจเจฏเฉเจ เจจเจนเฉเจ เจนเจจเฅค เจ เจธเฉเจ เจฐเจฟเจตเจฐเจธ เจชเฉเจฐเฉเจเจธเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจธ เจธเจฎเฉฑเจธเจฟเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจฆเฉ เจนเจพเจ, เจเจธ เจคเจฐเฉเจนเจพเจ:
.gitlab-ci.yml เจตเจฟเฉฑเจ, เจเจฒเฉฑเจธเจเจฐ เจธเจเฉเจ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจ เจธเฉเจ เจฌเฉเจฒเฉเจเจธเจฐ เจจเฉเฉฐ เจคเฉเจจเจพเจค เจเจฐเจจ เจฆเฉ เจฒเจพเจเจจ เจเฉเฉเจฆเฉ เจนเจพเจ (เจเฉ, เจเจฆเฉเจ เจเจฎเจฟเจ เจเจฐเจฆเจพ เจนเฉ, เจคเจพเจ เจธเจฟเจฐเจซ เจเจธเจฆเฉ เจธเฉฐเจฐเจเจจเจพ เจจเฉเฉฐ เจ เฉฑเจชเจกเฉเจ เจเจฐเจฆเจพ เจนเฉ (เจเฉเจเจชเจฒเฉเจ: /etc/nginx/conf เจฆเฉ เจ เจจเฉเจธเจพเจฐ เจจเจตเฉเจ nginx เจธเฉฐเจฐเจเจจเจพ เจซเจพเจเจฒเจพเจ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค 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; nginx เจจเฉเฉฐ url เจฒเจฟเจเฉ:
10.50.173.106 staging_BRANCH-1831_cluster.dev
เจเจธ เจฒเจ, เจ
เจฒเฉฑเจ-เจฅเจฒเฉฑเจ เจธเจเฉเจเจฟเฉฐเจ เจเจฒเฉฑเจธเจเจฐเจพเจ เจฆเฉ เจคเฉเจจเจพเจคเฉ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจ เจนเฉ เจ
เจคเฉ เจกเจฟเจตเฉเจฒเจชเจฐ เจนเฉเจฃ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจชเจฃเฉ เจเฉฐเจฎเจพเจ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจเจฟเจฃเจคเฉ เจตเจฟเฉฑเจ เจเจฒเจพ เจธเจเจฆเฉ เจนเจจเฅค
เจญเจตเจฟเฉฑเจ เจฆเฉเจเจ เจฏเฉเจเจจเจพเจตเจพเจ:
- เจธเจพเจกเฉ เจญเจพเจเจพเจ เจจเฉเฉฐ เจธเฉเจตเจพเจตเจพเจ เจตเจเฉเจ เจตเฉฑเจ เจเจฐเฉ
- เจนเจฐเฉเจ เจกเฉเจเจฐเจซเจพเจเจฒ เจฒเจ เจนเฉ
- เจธเจเฉเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจฒเฉเจก เจเฉเจคเฉ เจจเฉเจกเจพเจ เจฆเจพ เจเจเฉเจฎเฉเจเจฟเจเจฒเฉ เจชเจคเจพ เจฒเจเจพเจ
- เจจเจพเจฎ เจชเฉเจเจฐเจจ เจฆเฉเจเจฐเจพ เจจเฉเจก เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเฉ (เจฒเฉเจ เจตเจฟเฉฑเจ เจเจเจกเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจฌเจเจพเจ)
- เจเฉฑเจ เจเจพเจเจ เจเฉเฉเฉ เจเจฟ เจธเจเฉเจ เจจเจธเจผเจ เจนเฉ เจเจฟเจ เจนเฉ
- ...
เจฒเจ เจตเจฟเจธเจผเฉเจธเจผ เจงเฉฐเจจเจตเจพเจฆ
เจธเจฐเฉเจค: www.habr.com