version: '3'

services:

## VOLUME CONTAINER-TO-CONTAINER AND HOST-TO-CONTAINER TEST ##

  volumes-example-service:
    image: alpine:latest
    container_name: volumes-example-service
    volumes: 
      - /tmp:/my-volumes/host-volume
      - /home:/my-volumes/readonly-host-volume:ro
      - my-named-global-volume:/my-volumes/named-global-volume    
    tty: true # Needed to keep the container running

  another-volumes-example-service:
    image: alpine:latest
    container_name: another-volumes-example-service
    volumes: 
      - my-named-global-volume:/another-path/the-same-named-global-volume
    tty: true # Needed to keep the container running

## NETWORK CONTAINER-TO-CONTAINER TEST ##

  network-example-service:
    image: karthequian/helloworld:latest
    container_name: network-example-service
    networks:
      - my-shared-network

  another-service-in-the-same-network:
    image: alpine:latest
    container_name: another-service-in-the-same-network
    networks: 
      - my-shared-network

    tty: true # Needed to keep the container running

  another-service-in-its-own-network:
    image: alpine:latest
    container_name: another-service-in-its-own-network
    networks: 
      - my-private-network
    tty: true # Needed to keep the container running

## NETWORK HOST-TO-CONTAINER TEST ##

  network-example-service-available-to-host-on-port-1337:
    image: karthequian/helloworld:latest
    container_name: network-example-service-available-to-host-on-port-1337
    networks: 
      - my-shared-network
    ports:
      - "1337:80"

volumes:
  my-named-global-volume:

networks:
  my-shared-network: {}
  my-private-network: {}