docker-compose.dev.yml
version: '3.7'
services:
products-service:
build:
context: services/products
dockerfile: ./docker/Dockerfile
target: dev
image: ${CI_REGISTRY_PREFIX}/api/products-service
container_name: products
env_file: services/products/env/.env.prod
restart: always
labels:
- traefik.http.routers.product-service.rule=Host(`api.kicksware.com`) && PathPrefix(`/products`)
- traefik.http.routers.product-service.tls=true
- traefik.http.routers.product-service.tls.certresolver=le
- traefik.http.routers.product-service-grpc.rule=Host(`localhost`) && PathPrefix(`/proto.ProductService`)
- traefik.http.routers.product-service-grpc.entrypoints=grpc
- traefik.http.services.product-service-grpc.loadbalancer.server.scheme=h2c
- traefik.docker.network=web
networks:
- web
- data
volumes:
- ./product-service/env:/dist/env
- key-volume:/key
users-service:
build:
context: services/users
dockerfile: ./docker/Dockerfile
target: dev
image: ${CI_REGISTRY_PREFIX}/api/users-service
container_name: users
env_file: services/users/env/.env.prod
restart: always
labels:
- traefik.http.routers.user-service.rule=Host(`localhost`) && PathPrefix(`/users`) || PathPrefix(`/auth`) ||
PathPrefix(`/mail`) || PathPrefix(`/interact`)
- traefik.http.routers.user-service.tls=true
- traefik.http.routers.user-service.tls.certresolver=le
- traefik.http.routers.user-service-grpc.rule=Host(`localhost`) && PathPrefix(`/proto.UserService`)
- traefik.http.routers.user-service-grpc.entrypoints=grpc
- traefik.http.services.user-service-grpc.loadbalancer.server.scheme=h2c
- traefik.docker.network=web
networks:
- web
- data
volumes:
- ./user-service/env:/dist/env
- ./user-service/template:/dist/template
- key-volume:/dist/key
- key-volume:/key
references-service:
build:
context: services/references
dockerfile: ./docker/Dockerfile
target: dev
image: ${CI_REGISTRY_PREFIX}/api/references-service
container_name: references
env_file: services/references/env/.env.prod
restart: always
labels:
- traefik.http.routers.reference-service-rest.rule=Host(`localhost`) && PathPrefix(`/references`)
- traefik.http.routers.reference-service-rest.entrypoints=web
- traefik.http.routers.reference-service-rest.tls=true
- traefik.http.routers.reference-service-rest.tls.certresolver=le
- traefik.http.routers.reference-service-grpc.rule=Host(`localhost`) && PathPrefix(`/proto.ReferenceService`)
- traefik.http.routers.reference-service-grpc.entrypoints=grpc
- traefik.http.services.reference-service-grpc.loadbalancer.server.scheme=h2c
- traefik.docker.network=web
volumes:
- ./reference-service/env:/dist/env
- key-volume:/key
networks:
- web
- data
search-service:
build:
context: services/search
dockerfile: ./docker/Dockerfile
target: dev
image: ${CI_REGISTRY_PREFIX}/api/search-service
container_name: search
env_file: services/search/env/.env.prod
restart: always
labels:
- traefik.http.routers.search-service.rule=Host(`api.kicksware.com`) && PathPrefix(`/search`)
- traefik.http.routers.search-service.tls=true
- traefik.http.routers.search-service.tls.certresolver=le
- traefik.http.routers.search-service-grpc.rule=Host(`localhost`) && PathPrefix(`/proto.SearchService`)
- traefik.http.routers.search-service-grpc.entrypoints=grpc
- traefik.http.services.search-service-grpc.loadbalancer.server.scheme=h2c
- traefik.docker.network=web
networks:
- web
- elastic
- data
volumes:
- ./search-service/env:/dist/env
- key-volume:/key
depends_on:
- references-service
- products-service
networks:
elastic:
driver: bridge
data:
driver: bridge
web:
external: true
volumes:
key-volume:
driver: local
driver_opts:
o: bind
type: none
device: /host_mnt/c/source/keys