summaryrefslogtreecommitdiff
path: root/stacks/.template/compose.template.yml
blob: 65895dfec0acef3a16fad5bc92de398219ca359d (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
## Template compose used for each stack.
name: ${_STACK_X} # Explicit project name (do not rely on directory name)

networks:
  net:
    name: ${_NET_X}
    external: true # All networks SHOULD be external in production.
  net2:
    name: ${_NET_Y}
    external: true

volumes:
  data:
    name: ${_VOLUME_X} # Naming Convention: _[PURPOSE]_VOLUME
    external: true # All volumes SHOULD be external in production.
  config:
    name: ${_VOLUME_Y}
    external: true
  custom:
    name: ${_VOLUME_Z} # Custom volumes may not be external depending on the stack.
    # External volumes are not required for local stack testing.

services:
  servicename:
    container_name: ${_CONTAINER_X} # Explicitly named containers.
    image: ${_IMAGE_X}
    restart: unless-stopped
    env_file:
      # NOTE: .compose.env WILL override .env if there are overlapping values.
      - .compose.env # Compose wiring defaults go here
      - .env # Service env vars
    # Uncomment if bind mounting should not belong to root
    # UID and GID MUST be set in .env
    # user: '${UID}:${GID}'
    volumes:
      # Directory Bind Mounting
      # - ./conf:/etc/service:ro

      # External Docker Volume Mount
      - type: volume
        source: data # Must exist if external; overridden in local dev
        target: /data
      - type: volume
        source: config # Must exist if external; overridden in local dev
        target: /config
      - type: volume
        source: custom # Must exist if external; overridden in local dev
        target: /custom
    networks:
      - net
    expose:
      - 80
      - 9001
      - 67