diff --git a/docker-compose.sample.yml b/docker-compose.sample.yml index 7cb2c433..03a0d4b2 100644 --- a/docker-compose.sample.yml +++ b/docker-compose.sample.yml @@ -11,7 +11,14 @@ services: - 8888:8888 healthcheck: # Use https if using HTTPS= env - test: ["curl", "-XGET", "-k", "http://mmgis:8888/API/utils/healthcheck"] + test: + [ + "CMD-SHELL", + "curl", + "-XGET", + "-k", + "http://mmgis:8888/API/utils/healthcheck", + ] interval: 10s retries: 10 start_period: 10s diff --git a/docker-compose.v1-sample.yml b/docker-compose.v1-sample.yml new file mode 100644 index 00000000..0881d9f0 --- /dev/null +++ b/docker-compose.v1-sample.yml @@ -0,0 +1,171 @@ +services: + mmgis: + build: . + depends_on: + - db + env_file: .env + ports: + - 8888:8888 + restart: on-failure + volumes: + - ./Missions:/usr/src/app/Missions + - ./ssl:/usr/src/app/ssl + + stac-fastapi: + image: ghcr.io/stac-utils/stac-fastapi-pgstac:3.0.0 + ports: + - 8881 + environment: + # Postgres connection + - POSTGRES_USER=username + - POSTGRES_PASS=password + - POSTGRES_DBNAME=mmgis-stac + - POSTGRES_HOST_READER=db + - POSTGRES_HOST_WRITER=db + - POSTGRES_PORT=5432 + - DB_MIN_CONN_SIZE=1 + - DB_MAX_CONN_SIZE=1 + depends_on: + - db + command: bash -c "bash /tmp/scripts/wait-for-it.sh -t 120 -h db -p 5432 && uvicorn stac_fastapi.pgstac.app:app --host 0.0.0.0 --port 8881" + volumes: + - ./adjacent-servers/docker-scripts:/tmp/scripts + - ./Missions:/Missions + + tipg: + image: ghcr.io/developmentseed/tipg:0.7.2 + ports: + - 8882 + environment: + # Application + - HOST=0.0.0.0 + - PORT=8882 + # https://github.com/tiangolo/uvicorn-gunicorn-docker#web_concurrency + - WEB_CONCURRENCY=10 + # https://github.com/tiangolo/uvicorn-gunicorn-docker#workers_per_core + # - WORKERS_PER_CORE=1 + # https://github.com/tiangolo/uvicorn-gunicorn-docker#max_workers + # - MAX_WORKERS=10 + # Postgres connection + - POSTGRES_USER=username + - POSTGRES_PASS=password + - POSTGRES_DBNAME=mmgis-stac + - POSTGRES_HOST=db + - POSTGRES_PORT=5432 + - DB_MIN_CONN_SIZE=1 + - DB_MAX_CONN_SIZE=10 + command: bash -c "bash /tmp/scripts/wait-for-it.sh -t 120 -h db -p 5432 && /start.sh" + depends_on: + - db + volumes: + - ./adjacent-servers/docker-scripts:/tmp/scripts + - ./Missions:/Missions + + titiler: + # TODO: remove once https://github.com/rasterio/rasterio-wheels/issues/69 is resolved + # See https://github.com/developmentseed/titiler/discussions/387 + platform: linux/amd64 + image: ghcr.io/developmentseed/titiler-uvicorn:0.18.6 + ports: + - 8883 + environment: + # Application + - HOST=0.0.0.0 + - PORT=8883 + # Uvicorn + # http://www.uvicorn.org/settings/#production + - WEB_CONCURRENCY=1 + # GDAL config + - CPL_TMPDIR=/tmp + - GDAL_CACHEMAX=75% + - GDAL_INGESTED_BYTES_AT_OPEN=32768 + - GDAL_DISABLE_READDIR_ON_OPEN=EMPTY_DIR + - GDAL_HTTP_MERGE_CONSECUTIVE_RANGES=YES + - GDAL_HTTP_MULTIPLEX=YES + - GDAL_HTTP_VERSION=2 + - PYTHONWARNINGS=ignore + - VSI_CACHE=TRUE + - VSI_CACHE_SIZE=536870912 + # GDAL VSI Config + # https://gdal.org/user/virtual_file_systems.html#vsis3-aws-s3-files + # https://gdal.org/user/virtual_file_systems.html#vsigs-google-cloud-storage-files + # https://gdal.org/user/virtual_file_systems.html#vsiaz-microsoft-azure-blob-files + # - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} + # - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} + # TiTiler config + # - TITILER_API_DISABLE_STAC=TRUE/FALSE + # - TITILER_API_DISABLE_MOSAIC=TRUE/FALSE + # - TITILER_API_DISABLE_COG=TRUE/FALSE + # - TITILER_API_CORS_ORIGIN=url.io,url.xyz + # - TITILER_API_CACHECONTROL=public, max-age=3600 + # - TITILER_API_DEBUG=TRUE/FALSE + # - MOSAIC_CONCURRENCY= # will default to `RIO_TILER_MAX_THREADS` + # rio-tiler config + # - RIO_TILER_MAX_THREADS= + volumes: + - ./Missions:/Missions + + titiler-pgstac: + # At the time of writing, rasterio and psycopg wheels are not available for arm64 arch + # so we force the image to be built with linux/amd64 + platform: linux/amd64 + image: ghcr.io/stac-utils/titiler-pgstac:1.4.0 + ports: + - 8884 + environment: + # Application + - HOST=0.0.0.0 + - PORT=8884 + # https://github.com/tiangolo/uvicorn-gunicorn-docker#web_concurrency + - WEB_CONCURRENCY=1 + # https://github.com/tiangolo/uvicorn-gunicorn-docker#workers_per_core + - WORKERS_PER_CORE=1 + # https://github.com/tiangolo/uvicorn-gunicorn-docker#max_workers + - MAX_WORKERS=10 + # Postgres connection + - POSTGRES_USER=username + - POSTGRES_PASS=password + - POSTGRES_DBNAME=mmgis-stac + - POSTGRES_HOST=db + - POSTGRES_PORT=5432 + - DB_MIN_CONN_SIZE=1 + - DB_MAX_CONN_SIZE=10 + # - DB_MAX_QUERIES=10 + # - DB_MAX_IDLE=10 + # GDAL Config + - CPL_TMPDIR=/tmp + - GDAL_CACHEMAX=75% + - GDAL_INGESTED_BYTES_AT_OPEN=32768 + - GDAL_DISABLE_READDIR_ON_OPEN=EMPTY_DIR + - GDAL_HTTP_MERGE_CONSECUTIVE_RANGES=YES + - GDAL_HTTP_MULTIPLEX=YES + - GDAL_HTTP_VERSION=2 + - VSI_CACHE=TRUE + - VSI_CACHE_SIZE=536870912 + # TiTiler Config + - MOSAIC_CONCURRENCY=1 + # AWS S3 endpoint config + - AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID} + - AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} + # TiTiler pgSTAC + - TITILER_PGSTAC_SEARCH_EXITWHENFULL=FALSE + - TITILER_PGSTAC_SEARCH_SKIPCOVERED=FALSE + depends_on: + - db + command: bash -c "bash /tmp/scripts/wait-for-it.sh -t 120 -h db -p 5432 && /start.sh" + volumes: + - ./Missions:/Missions + - ./adjacent-servers/docker-scripts:/tmp/scripts + + db: + image: postgis/postgis:16-3.4-alpine + env_file: .env + environment: + - POSTGRES_PASSWORD_OFF=Rename to 'POSTGRES_PASSWORD' and replace this with an initial root password for the DB + ports: + - 5432 + restart: on-failure + volumes: + - mmgis-db:/var/lib/postgresql/data +volumes: + mmgis-db: