많은 비용이 들지 않는 자체 호스팅 지속적 전달 💰 - 1부

개요



이 시리즈에서는 DroneTraefik 덕분에 개인 서버에서 무료로 실행할 수 있는 오픈 소스 자체 관리형 지속적 배포 솔루션을 설정하는 방법을 보여주고자 합니다.

목표는 다음을 실행하여 라이브 웹 사이트에서 웹 앱을 업데이트하는 것입니다.

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

좋은 웹페이지 즐겨찾기