Skip to content

Cum să rulezi worker-i Concourse în containere

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să rulezi worker. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.

Worker-ii Concourse pot rula în containere Docker, oferind izolare, portabilitate și ușurință în orchestrare.

Worker Docker de bază

docker run -d \
  --name concourse-worker \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /opt/concourse-worker:/worker \
  concourse/concourse \
  worker \
  --work-dir=/worker \
  --tsa-host=ci.dodatech.com:2222 \
  --tsa-public-key=/etc/concourse/tsa_host_key.pub \
  --tsa-worker-private-key=/etc/concourse/worker_key

Docker Compose

version: "3.8"
services:
  worker:
    image: concourse/concourse:7
    privileged: true
    restart: always
    environment:
      CONCOURSE_WORK_DIR: /worker
      CONCOURSE_TSA_HOST: ci.dodatech.com:2222
      CONCOURSE_TSA_PUBLIC_KEY: /etc/concourse/tsa_host_key.pub
      CONCOURSE_TSA_WORKER_PRIVATE_KEY: /etc/concourse/worker_key
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - worker_data:/worker
    ports:
      - "8888:8888"

volumes:
  worker_data:

Worker în Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: concourse-worker
spec:
  replicas: 3
  selector:
    matchLabels:
      app: concourse-worker
  template:
    metadata:
      labels:
        app: concourse-worker
    spec:
      containers:
        - name: worker
          image: concourse/concourse:7
          args:
            - worker
            - --work-dir=/worker
            - --tsa-host=ci.dodatech.com:2222
          volumeMounts:
            - name: worker-keys
              mountPath: /etc/concourse
            - name: worker-data
              mountPath: /worker
      volumes:
        - name: worker-keys
          secret:
            secretName: concourse-keys
        - name: worker-data
          emptyDir: {}

Limitări de resurse

deploy:
  resources:
    limits:
      cpus: "2"
      memory: 4G
    reservations:
      cpus: "1"
      memory: 2G

Verificare status worker

docker logs concourse-worker --tail 50

Output așteptat:

2025-01-15T10:00:00Z I registering worker...
2025-01-15T10:00:02Z I worker registered successfully
2025-01-15T10:00:02Z I waiting for jobs...

Prevenire

  • Folosește privileged: true pentru suport Docker-in-Docker
  • Montează docker.sock pentru a permite worker-ului să ruleze containere
  • Alocă suficiente resurse pentru compilări paralele
  • Configurează volume persistente pentru cache

Greșeli comune

  1. Worker fără privileged -- nu poate rula containere copil
  2. Volum ephemeral -- cache-ul se pierde la restart, job-urile durează mai mult
  3. Lipsa cheilor de autentificare -- worker-ul nu se conectează la server
Worker-ul în container rulează containere copil?

Da, prin montarea socket-ului Docker sau în modul privileged.

Cum actualizez worker-ul?

Oprește containerul vechi și pornește unul nou cu imaginea actualizată: docker pull concourse/concourse && docker restart concourse-worker.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech runs containerized workers for scalable CI/CD.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro