--- version: "3.9" networks: flow: name: "flow" ipam: driver: "default" config: - subnet: "${NETWORK_FORGE_FLOW_SUBNET}" volumes: traefik-shared: name: "traefik-config-shared-volume" services: # -- Traffic flow -- traefik: container_name: "traffic-flow" image: localhost/flow/traefik:${TRAEFIK_VERSION} build: context: "../traefik" networks: flow: ipv4_address: "${TRAEFIK_CONTAINER_IPV4_ADDRESS}" ports: - target: 80 published: 80 protocol: "tcp" mode: "host" - target: 443 published: 443 protocol: "tcp" mode: "host" - target: ${TRAEFIK_EXTERNAL_SSH_PORT} published: ${TRAEFIK_EXTERNAL_SSH_PORT} protocol: "tcp" mode: "host" restart: "always" volumes: - type: "volume" source: "traefik-shared" target: "${TRAEFIK_SHARED_MOUNT_POINT}" - type: "bind" source: "/etc/timezone" target: "/etc/timezone" read_only: true - type: "bind" source: "/etc/localtime" target: "/etc/localtime" read_only: true # Traefik TLS volume - type: "bind" source: "${TRAEFIK_TLS_HOST_DIR}" target: "${TRAEFIK_TLS_CONTAINER_DIR}" # -- Code flow -- gitea: container_name: "code-flow" image: localhost/flow/gitea:${GITEA_VERSION} build: context: "../gitea" expose: - "${GITEA_SSH_PORT}" - "${GITEA_HTTP_PORT}" networks: flow: ipv4_address: "${GITEA_CONTAINER_IPV4_ADDRESS}" restart: "always" volumes: - type: "volume" source: "traefik-shared" target: "${TRAEFIK_SHARED_MOUNT_POINT}" - type: "bind" source: "/etc/timezone" target: "/etc/timezone" read_only: true - type: "bind" source: "/etc/localtime" target: "/etc/localtime" read_only: true # Gitea data volume - type: "bind" source: "${GITEA_DATA_HOST_DIR}" target: "${GITEA_DATA_CONTAINER_DIR}" # -- Free Flow 2 -- gotosocial: container_name: "free-flow-2" image: localhost/flow/gotosocial:${GTS_VERSION} build: context: "../gotosocial" expose: - "${GTS_PORT}" networks: flow: ipv4_address: "${GTS_CONTAINER_IPV4_ADDRESS}" restart: "always" volumes: - type: "volume" source: "traefik-shared" target: "${TRAEFIK_SHARED_MOUNT_POINT}" - type: "bind" source: "/etc/timezone" target: "/etc/timezone" read_only: true - type: "bind" source: "/etc/localtime" target: "/etc/localtime" read_only: true # Go To Social data volume - type: "bind" source: "${GTS_DATA_HOST_DIR}" target: "${GTS_DATA_CONTAINER_DIR}"