Context của bài toán này là build 1 con Docker để chạy Github Runners ( scaleble ). Và mọi thứ được chạy trong 1 con VM thuộc về ESXi
- ESXi build 1 con VMWare chạy Ubuntu Server 20.04 . Cái này dễ dàng không có gì bàn cãi
- Và tất nhiên sau đó sẽ setup Docker ( không cần chạy without
sudo
cũng được )
Và ta có 1 file docker-compose sau
version: "3.7"
services:
runner:
image: myoung34/github-runner:latest
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
RUNNER_SCOPE: repo
RUNNER_NAME_PREFIX: runner
LABELS: ubuntu,x64
REPO_URL: <repository_url>
EPHEMERAL: 1
ACCESS_TOKEN: <github_token>
deploy:
replicas: 4
resources:
limits: // Giới hạn tối đa
cpus: '1'
memory: 2G
reservations: // Tối thiểu
cpus: '1'
memory: 1G
Và giờ chỉ cần chạy docker-compose up -d
Tuy nhiên câu chuyện chưa hết vui !!! Do bản chất ta đang chạy qua Docker. Do đó việc build các service ( cũng qua docker ) lại không khả thi. Cụ thể là ta cần build MySQL / Redis etc … Vậy thì sao ???
…. tách em nó ra 1 VM khác và update lại IP về con VM đó thôi 😀 . Chút mất công nhưng cơ bản đã dễ dàng rất nhiều.
Từ giờ con VM chạy Runners ta tạo n folder, mỗi folder cho 1 docker-compose
ứng với 1 repository