version: '2'

services:
  webmvc:
    image: eshop/web${TAG}
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - CatalogUrl=http://catalog.api
      - OrderingUrl=http://ordering.api
    ports:
      - "5100:80"
    depends_on:
      - catalog.api
      - identity.data
      - basket.api

  webspa:
    image: eshop/webspa
    build:
      context: .
      dockerfile: Dockerfile
    environment:
      - CatalogUrl=http://catalog.api
      - OrderingUrl=http://ordering.api
    ports:
      - "5104:80"
    depends_on:
      - catalog.api
      - identity.data
      - basket.api

  catalog.api:
    image: eshop/catalog.api
    environment:
      - ConnectionString=Server=catalog.data;Initial Catalog=CatalogData;User Id=sa;Password=Pass@word
    expose:
      - "80"
    ports:
      - "5101:80"
    depends_on:
      - catalog.data

  catalog.data:
    image: microsoft/mssql-server-linux
    environment:
      - SA_PASSWORD=Pass@word
      - ACCEPT_EULA=Y
    ports:
      - "5434:1433"

  ordering.api:
    image: eshop/ordering.api
    environment:
      - ConnectionString=Server=ordering.data;Database=Microsoft.eShopOnContainers.Services.OrderingDb;User Id=sa;Password=Pass@word
    ports:
      - "5102:80"
# (Go to Production): For secured/final deployment, remove Ports mapping and
# leave just the internal expose section 
#    expose:
#      - "80"
    extra_hosts:
      - "CESARDLBOOKVHD:10.0.75.1"
    depends_on:
      - ordering.data

  ordering.data:
    image: eshop/ordering.data.sqlserver.linux
    ports:
      - "5432:1433"

  identity.data:
    image: microsoft/mssql-server-linux
    environment:
      - SA_PASSWORD=Pass@word
      - ACCEPT_EULA=Y
    ports:
      - "5433:1433"

  basket.api:
    image: eshop/basket.api
    environment:
      - ConnectionString=basket.data
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "5103:80"
    depends_on:
      - basket.data

  basket.data:
    image: redis