# Development containers, these should only be used if you are developing. version: '3' services: db: # https://github.com/docker-library/docs/tree/master/postgres image: postgres:12 environment: - POSTGRES_DB=wrolpi - POSTGRES_PASSWORD=wrolpi ports: - "5432:5432" healthcheck: test: [ 'CMD-SHELL', 'pg_isready -U postgres' ] interval: 10s api: depends_on: - db build: context: . dockerfile: docker/api/Dockerfile volumes: - './main.py:/opt/wrolpi/main.py' - './wrolpi:/opt/wrolpi/wrolpi' - './modules:/opt/wrolpi/modules' - './test:/opt/wrolpi/test' - './test:/media/wrolpi' - './alembic:/opt/wrolpi/alembic' - './alembic.ini:/opt/wrolpi/alembic.ini' ports: - ${REACT_APP_API-127.0.0.1:8081}:8081 command: '-vv api --host 0.0.0.0' user: '${UID-1000}:${GID-1000}' healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:8081/api/echo' ] interval: 2m archive: # Python/Sanic wrapper around Singlefile and Readability. build: context: . dockerfile: docker/archive/Dockerfile volumes: - './docker/archive/main.py:/app/main.py' ports: - '8083:8080' healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:8080/' ] interval: 2m app: # React App depends_on: - api build: context: . dockerfile: docker/app/Dockerfile volumes: - './app/public:/app/public' - './app/src:/app/src' - './app/package.json:/app/package.json' - '.env:/app/.env' command: 'npm run start' stdin_open: true healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:3000' ] interval: 1m user: '${UID-1000}:${GID-1000}' environment: # Force React to use nginx port to connect to it's websocket. - WDS_SOCKET_PORT=0 map: # https://github.com/Overv/openstreetmap-tile-server image: overv/openstreetmap-tile-server:v1.6.0 volumes: - 'openstreetmap-data:/var/lib/postgresql/12/main' - 'openstreetmap-rendered-tiles:/var/lib/mod_tile' - './modules/map/leaflet.html:/var/www/html/index.html' - './modules/map/leaflet.js:/var/www/html/leaflet.js' - './modules/map/leaflet.css:/var/www/html/leaflet.css' ports: - '8084:80' command: 'run' shm_size: 1g # Increase shared size to render large map tiles healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:80' ] interval: 1m web: depends_on: - app image: nginx:latest ports: - ${WEB_HOST-0.0.0.0}:${WEB_PORT-8080}:80 volumes: - './nginx.dev.conf:/etc/nginx/nginx.conf' - './icon.ico:/etc/nginx/favicon.ico' - './icon.png:/etc/nginx/icon.png' - './test:/opt/media' healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:80' ] interval: 1m zim: # kiwix-serve build: context: . dockerfile: docker/zim/Dockerfile volumes: - './test:/media/wrolpi' - './docker/zim/entrypoint.sh:/entrypoint.sh' ports: - '8085:8085' healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:8085' ] interval: 1m help: # The WROLPi Help documentation. build: context: . dockerfile: docker/help/Dockerfile volumes: - './docker/help/wrolpi-help:/opt/wrolpi-help' ports: - '8086:8086' healthcheck: test: [ 'CMD-SHELL', 'curl http://127.0.0.1:8086' ] interval: 1m volumes: openstreetmap-data: external: true openstreetmap-rendered-tiles: external: true