aboutsummaryrefslogtreecommitdiff
path: root/template/docker-compose.yaml.template
blob: 699bc6ffc268579e9099359f918b779c455f838d (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
services:
  halo:
    image: halohub/halo:latest
    container_name: halo
    restart: on-failure:3
    volumes:
      - ./data/halo:/root/.halo
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "8090:8090"
    environment:
      - SERVER_PORT=8090
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.h2.Driver
      - SPRING_DATASOURCE_URL=jdbc:h2:file:~/.halo/db/halo
      - SPRING_DATASOURCE_USERNAME=admin
      - SPRING_DATASOURCE_PASSWORD={{CRUPEST_HALO_DB_PASSWORD}}
      - HALO_ADMIN_PATH=admin
      - HALO_CACHE=memory
    networks:
      - internal

  timeline:
    image: crupest/timeline:latest
    container_name: timeline
    restart: on-failure:3
    volumes:
      - ./data/timeline:/root/timeline
    ports:
      - "5000:80"
    networks:
      - internal

  code-server:
    image: crupest/arch-code-server:latest
    build:
      context: ./docker/arch-code-server
      dockerfile: Dockerfile
      args:
        - CRUPEST_USER={{CRUPEST_USER}}
        - CRUPEST_GROUP={{CRUPEST_GROUP}}
        - CRUPEST_UID={{CRUPEST_UID}}
        - CRUPEST_GID={{CRUPEST_GID}}
        - USE_CHINA_MIRROR={{CRUPEST_IN_CHINA}}
    container_name: code-server
    restart: on-failure:3
    volumes:
      - ./data/code-server:/data
    ports:
      - "8080:8080"
    networks:
      - internal

  caddy:
    image: caddy:latest
    container_name: caddy
    restart: on-failure:3
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./site:/srv:ro
      - ./data/caddy/data:/data
      - ./data/caddy/config:/config
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    networks:
      - internal
      - external

  mailserver:
    image: docker.io/mailserver/docker-mailserver:latest
    container_name: mailserver
    # If the FQDN for your mail-server is only two labels (eg: example.com),
    # you can assign this entirely to `hostname` and remove `domainname`.
    hostname: mail
    domainname: {{CRUPEST_DOMAIN}}
    env_file: mailserver.env
    # More information about the mail-server ports:
    # https://docker-mailserver.github.io/docker-mailserver/edge/config/security/understanding-the-ports/
    # To avoid conflicts with yaml base-60 float, DO NOT remove the quotation marks.
    ports:
      - "25:25" # SMTP  (explicit TLS => STARTTLS)
      - "143:143" # IMAP4 (explicit TLS => STARTTLS)
      - "465:465" # ESMTP (implicit TLS)
      - "587:587" # ESMTP (explicit TLS => STARTTLS)
      - "993:993" # IMAP4 (implicit TLS)
    volumes:
      - ./data/dms/mail-data/:/var/mail/
      - ./data/dms/mail-state/:/var/mail-state/
      - ./data/dms/mail-logs/:/var/log/mail/
      - ./data/dms/config/:/tmp/docker-mailserver/
      - ./data/certbot/certs:/etc/letsencrypt
      - /etc/localtime:/etc/localtime:ro
    restart: always
    stop_grace_period: 1m
    cap_add:
      - NET_ADMIN
    healthcheck:
      test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
      timeout: 3s
      retries: 0
    networks:
      - external

networks:
  internal:
    internal: true
  external: