version: "3.5" services: server: # build: ./server build: context: ./server dockerfile: Dockerfile.debug networks: - web - internal environment: POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password POSTGRES_USER: kalkutago POSTGRES_DB: kalkutago POSTGRES_HOST: database secrets: [ postgres-password ] depends_on: [ database ] expose: [ 8000 ] # ports: # # TODO remove in prod # - 8000:8000 volumes: - ./client/dist:/src/public:ro labels: traefik.enable: true traefik.http.routers.kalkutago_server.rule: 'Host(`kalkutago`) && PathPrefix(`/api`)' database: image: postgres environment: POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password POSTGRES_USER: kalkutago POSTGRES_DB: kalkutago secrets: [ postgres-password ] networks: [ internal ] volumes: - ./db.mount:/var/lib/postgresql/data client_devserver: image: node volumes: [ ./client:/client/ ] working_dir: /client command: [ "sh", "-c", "yarn && yarn dev --host 0.0.0.0" ] expose: [ 5173 ] networks: [ web ] labels: traefik.enable: true traefik.http.routers.kalkutago_client.rule: 'Host(`kalkutago`) && !PathPrefix(`/api`)' traefik.http.services.kalkutago_client.loadbalancer.server.port: 5173 proxy: image: traefik volumes: - source: /var/run/docker.sock target: /var/run/docker.sock type: bind - source: ./traefik.yaml target: /traefik.yaml type: bind - source: ./traefik-config target: /config type: bind ports: - 80:80 networks: [ web ] secrets: postgres-password: file: ./server/postgres.pw networks: internal: internal: true web: external: true