# Docker compose file for local development. # Initialize your local environment variables either in your shell # or in the ".env" file. version: "3.7" services: carts: container_name: carts build: context: ./carts networks: - dev-net environment: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN ports: - "8003:80" ddb: image: amazon/dynamodb-local container_name: ddb command: -jar DynamoDBLocal.jar -port 3001 networks: - dev-net ports: - 3001:3001 orders: container_name: orders build: context: ./orders networks: - dev-net ports: - "8004:80" products: container_name: products depends_on: - ddb environment: - AWS_REGION - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN - DDB_TABLE_PRODUCTS - DDB_TABLE_CATEGORIES - DDB_ENDPOINT_OVERRIDE - IMAGE_ROOT_URL - WEB_ROOT_URL build: context: ./products args: - GOPROXY_OVERRIDE networks: - dev-net ports: - "8001:80" recommendations: container_name: recommendations depends_on: - products environment: - AWS_PROFILE - AWS_DEFAULT_REGION - PRODUCT_SERVICE_HOST - PRODUCT_SERVICE_PORT - OFFERS_SERVICE_HOST - OFFERS_SERVICE_PORT - AWS_XRAY_DAEMON_ADDRESS=xray:2000 - EVIDENTLY_PROJECT_NAME volumes: - ~/.aws/:/root/.aws:ro build: context: ./recommendations networks: - dev-net ports: - "8005:80" # OpenSearch required for search service opensearch: image: opensearchproject/opensearch:1.3.3 container_name: opensearch environment: - plugins.security.disabled=true - discovery.type=single-node ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 cap_add: - IPC_LOCK volumes: - ${APPDATA}/opensearch/data:/tmp/opensearch/data networks: - dev-net ports: - 9200:9200 - 9300:9300 search: container_name: search depends_on: - opensearch environment: - AWS_PROFILE - OPENSEARCH_DOMAIN_SCHEME - OPENSEARCH_DOMAIN_HOST - OPENSEARCH_DOMAIN_PORT volumes: - ~/.aws/:/root/.aws:ro build: context: ./search networks: - dev-net ports: - "8006:80" users: container_name: users environment: - AWS_REGION - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN build: context: ./users networks: - dev-net ports: - "8002:80" offers: container_name: offers build: context: offers networks: - dev-net ports: - "8008:80" location: container_name: location build: context: location networks: - dev-net environment: - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN - RESOURCE_BUCKET - AWS_PROFILE - AWS_DEFAULT_REGION volumes: - ~/.aws/:/root/.aws:ro ports: - "8009:80" # This service has it's own .env file at src/web-ui/.env web-ui: container_name: web-ui build: context: ./web-ui target: production-stage networks: - dev-net ports: - "8080:80" volumes: - ../images:/usr/share/nginx/html/images:ro videos: container_name: videos build: context: ./videos networks: - dev-net environment: - AWS_PROFILE - AWS_DEFAULT_REGION - RESOURCE_BUCKET - PARAMETER_IVS_VIDEO_CHANNEL_MAP - USE_DEFAULT_IVS_STREAMS - AWS_XRAY_DAEMON_ADDRESS=xray:2000 - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN - IMAGE_ROOT_URL volumes: - ~/.aws/:/root/.aws:ro ports: - "8007:80" xray: image: amazon/aws-xray-daemon ports: - 2000:2000/udp environment: - AWS_PROFILE - AWS_DEFAULT_REGION - AWS_REGION - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_SESSION_TOKEN - HOME=/home networks: - dev-net volumes: - ~/.aws/:/home/.aws:ro swagger-ui: container_name: swagger-ui build: # This has to be outside of folder swagger-ui because it must copy # open api spec files from all services context: ./ dockerfile: swagger-ui/Dockerfile volumes: - ${PWD}/swagger-ui/index.html:/usr/share/nginx/html/index.html - ${PWD}/swagger-ui/services.json:/usr/share/nginx/html/services.json networks: - dev-net ports: - "8081:80" networks: dev-net: driver: bridge