summaryrefslogtreecommitdiff
path: root/doc/source/examples/docker-compose.yaml
blob: 839e9cf9e534f7f53a7d317cd1d34073ba31a9c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Version 2 is the latest that is supported by docker-compose in
# Ubuntu Xenial.
version: '2'

services:
  gerrit:
    image: gerritcodereview/gerrit
    ports:
      - "8080:8080"
      - "29418:29418"
    command: |
      /bin/sh -c '\
        git config -f /var/gerrit/etc/gerrit.config gerrit.canonicalWebUrl http://localhost:8080/ && \
        git config -f /var/gerrit/etc/gerrit.config gerrit.ui POLYGERRIT && \
        git config -f /var/gerrit/etc/gerrit.config sendemail.enable false && \
        git config -f /var/gerrit/etc/gerrit.config noteDb.changes.autoMigrate true && \
        /var/gerrit/bin/gerrit.sh run'
  gerritconfig:
    image: zuul/zuul-executor
    environment:
      - http_proxy
      - https_proxy
      - no_proxy=${no_proxy},gerrit
    depends_on:
      - gerrit
    volumes:
      - "sshkey:/var/ssh:z"
      - "nodessh:/var/node:z"
      - "./playbooks/:/var/playbooks/:z"
    # NOTE(pabelanger): Be sure to update this line each time we change the
    # default version of ansible for Zuul.
    command: "/usr/local/lib/zuul/ansible/2.8/bin/ansible-playbook /var/playbooks/setup.yaml"
  zk:
    image: zookeeper
  mysql:
    image: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: zuul
      MYSQL_USER: zuul
      MYSQL_PASSWORD: secret
      # Work around slow db startup when writing TZINFO data.
      MYSQL_INITDB_SKIP_TZINFO: 1
  scheduler:
    depends_on:
      - gerritconfig
      - zk
      - mysql
    environment:
      - http_proxy
      - https_proxy
      - no_proxy=${no_proxy},gerrit
      - ZUUL_MYSQL_PASSWORD=secret
    command: "sh -c '/var/playbooks/wait-to-start.sh && zuul-scheduler -f'"
    # FIXME: The scheduler has no ansible anymore so use the executor image.
    #        This needs to be changes such that ansible is not required for startup.
    image: zuul/zuul-scheduler
    volumes:
      - "./etc_zuul/:/etc/zuul/:z"
      - "./playbooks/:/var/playbooks/:z"
      - "sshkey:/var/ssh:z"
  web:
    command: "sh -c '/var/playbooks/wait-to-start-gearman.sh && zuul-web -f'"
    depends_on:
      - scheduler
      - mysql
    ports:
      - "9000:9000"
    image: zuul/zuul-web
    environment:
      ZUUL_MYSQL_PASSWORD: secret
    volumes:
      - "./etc_zuul/:/etc/zuul/:z"
      - "./playbooks/:/var/playbooks/:z"
  executor:
    privileged: true
    environment:
      - http_proxy
      - https_proxy
      - no_proxy=${no_proxy},gerrit,scheduler
      - ZUUL_MYSQL_PASSWORD=secret
    depends_on:
      - scheduler
    image: zuul/zuul-executor
    volumes:
      - "./etc_zuul/:/etc/zuul/:z"
      - "./playbooks/:/var/playbooks/:z"
      - "sshkey:/var/ssh:z"
      - "logs:/srv/static/logs:z"
  node:
    build:
      dockerfile: node-Dockerfile
      context: ./
      args:
        http_proxy: "${http_proxy}"
        https_proxy: "${http_proxy}"
        no_proxy: "${no_proxy},gerrit"
    volumes:
      - "nodessh:/root/.ssh:z"
  launcher:
    depends_on:
      - zk
    image: zuul/nodepool-launcher
    volumes:
      - "./etc_nodepool/:/etc/nodepool/:z"
    ports:
      - "8022:8022"
  logs:
    build:
      dockerfile: logs-Dockerfile
      context: ./
      args:
        http_proxy: "${http_proxy}"
        https_proxy: "${http_proxy}"
        no_proxy: "${no_proxy}"
    ports:
      - "8000:80"
    volumes:
      - "logs:/usr/local/apache2/htdocs:z"

volumes:
  sshkey:
  nodessh:
  logs: