version: "2.0" services: # HTTP server configured to listen on 127.0.0.1:8080 nginx: build: context: . volumes_from: - cms:ro ports: - 127.0.0.1:8080:80 depends_on: - instagram-api - quotes-api - twitch-cache-api - twitch-subs-api - cms # Instagram API service with /data/instagram mounted as database storage # INSTAGRAM_USERNAME is needed for synchronization instagram-api: build: context: ./instagram-api volumes: - /data/instagram:/instagram environment: - SQLALCHEMY_DATABASE_URI=sqlite:////instagram/instagram.db - INSTAGRAM_USERNAME=__INSTAGRAM_USERNAME__ expose: - 5000 # Quotes API service with /data/quotes mounted as database storage # SECRET_KEY is needed for API key validation quotes-api: build: context: ./quotes-api volumes: - /data/quotes:/quotes environment: - SQLALCHEMY_DATABASE_URI=sqlite:////quotes/quotes.db - SECRET_KEY=__SECRET_KEY__ expose: - 5000 # Twitch cache API service with /data/twitch-cache mounted as database storage # TWITCH_CLIENT_ID, TWITCH_OAUTH_TOKEN, TWITCH_CHANNEL_ID and TWITCH_CHANNEL_NAME # are needed for Twitch API access and synchronization twitch-cache-api: build: context: ./twitch-cache-api volumes: - /data/twitch-cache:/twitch-cache environment: - SQLALCHEMY_DATABASE_URI=sqlite:////twitch-cache/twitch-cache.db - TWITCH_CLIENT_ID=__TWITCH_CLIENT_ID__ - TWITCH_OAUTH_TOKEN=__TWITCH_OAUTH_TOKEN__ - TWITCH_CHANNEL_ID=__TWITCH_CHANNEL_ID__ - TWITCH_CHANNEL_NAME=__TWITCH_CHANNEL_NAME__ expose: - 5000 # Twitch subs API service with /data/twitch-subs mounted as database storage # SECRET_KEY is needed for API key validation twitch-subs-api: build: context: ./twitch-subs-api volumes: - /data/twitch-subs:/twitch-subs environment: - SQLALCHEMY_DATABASE_URI=sqlite:////twitch-subs/twitch-subs.db - SECRET_KEY=__SECRET_KEY__ expose: - 5000 # CMS service with /data/grav mounted as user data storage cms: build: context: ./cms volumes: - /data/grav:/app/user - /app expose: - 9000