version: "3.7" services: traefik: image: traefik:v2.5 command: - --api.insecure=false - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --certificatesresolvers.myresolver.acme.dnschallenge=true - --certificatesresolvers.myresolver.acme.dnschallenge.provider=cloudflare - --certificatesresolvers.myresolver.acme.email=j@suhjae.dev - --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json # environment: # - CF_API_EMAIL=j@suhjae.dev # - CF_API_KEY=z5qk6oEuPvWwqvAJO5B51abM3s-cwYWo4ovnutoX ports: - "80:80" - "443:443" # - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./letsencrypt:/letsencrypt networks: - web mongo: image: mongo expose: - "27017" # ports: # - "27017:27017" volumes: - mongo-db:/data/db networks: - web restart: always elasticsearch: build: context: elasticsearch dockerfile: Dockerfile environment: - discovery.type=single-node - xpack.security.enabled=false expose: - "9200" volumes: - es-db:/usr/share/elasticsearch/data networks: - web restart: always fastapi: build: context: backend dockerfile: Dockerfile labels: - traefik.enable=true - traefik.http.routers.fastapi.rule=Host(`luma.joseon.space`) - traefik.http.routers.fastapi.entrypoints=websecure - traefik.http.routers.fastapi.tls=true - traefik.http.routers.fastapi.tls.certresolver=myresolver expose: - "8000" depends_on: - mongo - elasticsearch - traefik volumes: - ./backend:/app environment: - MONGO_URI=mongodb://mongo:27017/luma - ELASTICSEARCH_URI=http://elasticsearch:9200 networks: - web restart: always networks: web: external: true volumes: mongo-db: es-db: