많은 비용이 들지 않는 자체 호스팅 지속적 전달 💰 - 1부
개요
이 시리즈에서는 Drone 및 Traefik 덕분에 개인 서버에서 무료로 실행할 수 있는 오픈 소스 자체 관리형 지속적 배포 솔루션을 설정하는 방법을 보여주고자 합니다.
목표는 다음을 실행하여 라이브 웹 사이트에서 웹 앱을 업데이트하는 것입니다.
git push origin master
당신의 개발 기계에.
그게 다야! 몇 분 후 웹 사이트는 방금 Git 리포지토리로 푸시된 변경 사항으로 자동 업데이트됩니다.
아래 이미지는 커밋 푸시에서 HTTPS 웹 사이트 제공까지의 이 프로세스를 보여줍니다.
요구 사항
필요한 소프트웨어를 호스트하고 실행하려면 Linux 서버가 있어야 합니다. 예를 들어 OVH에서 구입할 수 있습니다.
기술 스택
제시된 지속적 배포의 파이프라인에는 다음이 포함됩니다.
1. 깃허브
새 커밋에 대해 빌드 서버에 알리는 후크가 있는 호스팅된 Git 리포지토리입니다.
2. 드론
새로운 커밋을 수신하고 이미지를 빌드하여 Docker 저장소로 푸시하는 빌드 서버.
3. 트레이픽
웹 앱의 Docker 이미지를 실행하고 Drone으로 Docker 이미지 빌드를 실행하는 컨테이너로 웹 도메인foo.bar.com을 라우팅하는 로드 밸런서 및 리버스 프록시.
도커 설치
시작하려면 서버에서 실행되는 Docker가 필요합니다.
sudo apt-get update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce
sudo systemctl status docker
종료하려면
Ctrl-C
를 누르십시오.아래에서 루트가 아닌 사용자가 Docker에 액세스할 수 있습니다.
sudo usermod -aG docker yourusername
docker-compose 설치
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Traefik 설치
자세한 설치 방법은 이 문서를 기반으로 한 문서[1]를 참조하십시오.
홈 디렉터리로 이동하여 폴더를 만듭니다.
cd ~
mkdir traefik
cd traefik
apache2-utils
를 사용하여 Traefik 대시보드의 암호를 설정합니다.sudo apt-get install apache2-utils
htpasswd -Bc password.txt yourusername
password.txt
를 열고 여기에서 암호 해시를 복사합니다. 다음 단계에서 필요합니다.traefik.toml
파일을 만들고 아래 내용을 붙여넣습니다.vim traefik.toml
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.dashboard]
address = ":8080"
[entryPoints.dashboard.auth]
[entryPoints.dashboard.auth.basic]
users = ["$output_of_password.txt_file_created_above"] # ***** EDIT HERE *****
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[api]
entrypoint="dashboard"
[acme]
email = "[email protected]" # ***** EDIT HERE *****
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
[docker]
domain = "docker.yourdomain.com" # ***** EDIT HERE *****
watch = true
network = "web"
sudo docker network create web
touch acme.json
chmod 600 acme.json
Traefik 실행:
vim docker-compose.yml
그리고 아래에 붙여넣습니다.
version: '3'
services:
traefik:
image: traefik:1.7.6-alpine
restart: always
ports:
- "80:80"
- "443:443"
labels:
- traefik.frontend.rule=Host:traefik.foo.bar.com # ***** EDIT HERE *****
- traefik.port=8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
networks:
- web
networks:
web:
external: true
Traefik 실행
docker-compose up -d
Traefik 대시보드
Traefik 설치가 성공적이었는지 확인하려면 위의
traefik.foo.bar.com
파일에서 지정한 URLdocker-compose.yml
에 액세스할 수 있어야 합니다.아래와 같은 웹사이트가 표시되어야 합니다.
결론
잘했어요! 지속적 배포 파이프라인의 절반이 설정되었습니다. 다음 기사에서는 Drone 빌드 서버를 설치하는 방법과 GitHub, Drone 및 Traefik 트리오를 연결하는 방법을 보여줍니다.
[1] https://www.digitalocean.com/community/tutorials/how-to-use-traefik-as-a-reverse-proxy-for-docker-containers-on-ubuntu-18-04
Reference
이 문제에 관하여(많은 비용이 들지 않는 자체 호스팅 지속적 전달 💰 - 1부), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/limal/how-to-set-up-a-continuous-delivery-with-traefik-1lgg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)