summaryrefslogtreecommitdiff
path: root/ci/docker/docker-compose.yml
blob: 066c41d14ea7f8d72231312e5f15885857565874 (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
version: '3'

# Common environment vars
# These are the credentials for the portal
# And the URI of the server
x-common-env: &common-env
  PORTAL_USER: ${PORTAL_USER}
  PORTAL_PASS: ${PORTAL_PASS}
  OAUTH_EXPIRED_TTL: ${OAUTH_EXPIRED_TTL}
  SERVER_URI: "https://eduvpnserver"

# Define a network so that the containers can talk with eachother using their service name
networks:
  eduvpn_network:
    ipam:
        driver: default
        config:
          - subnet: 172.20.0.0/24

# Defines the services
services:
  # The eduvpn server with portal
  eduvpnserver:
    build:
      context: "."
      dockerfile: 'ci/docker/eduvpn-server.docker'
    sysctls: # needed for wireguard permissions, otherwise we get a permisison failed
      - net.ipv6.conf.all.disable_ipv6=0
    networks:
      eduvpn_network:
        ipv4_address: 172.20.0.6
    cap_add: # needed for wireguard
      - NET_ADMIN
    environment: *common-env
    healthcheck:
        test: ["CMD", "/eduvpn/server/healthcheck.sh"] # Wait for wireguard to come online
        interval: 5s
        timeout: 10s
        retries: 10
  # The container for testing the go code
  gotest:
    build:
      context: "."
      dockerfile: 'ci/docker/go-test.docker'
    environment: *common-env
    networks:
      eduvpn_network:
        ipv4_address: 172.20.0.5
    # Wait for eduvpn server to come online
    depends_on:
      eduvpnserver:
        condition: service_healthy