I am using the docker-compose file from the project docker-osm project.
The file is :
version: '3.4'
volumes:
osm-postgis-data:
settings-data:
import_done:
import_queue:
cache:
services:
db:
image: kartoza/postgis:${POSTGRES_VERSION}
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASS=${POSTGRES_PASS}
- POSTGRES_DBNAME=${POSTGRES_DBNAME}
- ALLOW_IP_RANGE=${ALLOW_IP_RANGE}
- FORCE_SSL=${FORCE_SSL}
volumes:
- osm-postgis-data:/var/lib/postgresql
- settings-data:/home/settings
healthcheck:
test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DBNAME} -U ${POSTGRES_USER}"]
imposm:
image: kartoza/docker-osm:imposm-latest
volumes:
- settings-data:/home/settings
- import_done:/home/import_done
- import_queue:/home/import_queue
- cache:/home/cache
depends_on:
db:
condition: service_healthy
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASS=${POSTGRES_PASS}
- POSTGRES_DBNAME=${POSTGRES_DBNAME}
- POSTGRES_PORT=${POSTGRES_PORT}
- POSTGRES_HOST=${POSTGRES_HOST}
- TIME=${TIME}
- SETTINGS=${SETTINGS}
- CACHE=${CACHE}
- IMPORT_DONE=${IMPORT_DONE}
- IMPORT_QUEUE=${IMPORT_QUEUE}
- SRID=${SRID}
- OPTIMIZE=${OPTIMIZE}
- DBSCHEMA_PRODUCTION=${DBSCHEMA_PRODUCTION}
- DBSCHEMA_IMPORT=${DBSCHEMA_IMPORT}
- DBSCHEMA_BACKUP=${DBSCHEMA_BACKUP}
- QGIS_STYLE=${QGIS_STYLE}
- CLIP=${CLIP}
- SSL_MODE=${SSL_MODE}
osmupdate:
image: kartoza/docker-osm:osmupdate-latest
volumes:
- settings-data:/home/settings
- import_done:/home/import_done
- import_queue:/home/import_queue
- cache:/home/cache
depends_on:
db:
condition: service_healthy
environment:
- MAX_DAYS=${MAX_DAYS}
- DIFF=${DIFF}
- MAX_MERGE=${MAX_MERGE}
- COMPRESSION_LEVEL=${COMPRESSION_LEVEL}
- BASE_URL=${BASE_URL}
- IMPORT_QUEUE=${IMPORT_QUEUE}
- IMPORT_DONE=${IMPORT_DONE}
- TIME=${TIME}
osmenrich:
image: kartoza/docker-osm:osmenrich-latest
volumes:
- settings-data:/home/settings
- import_done:/home/import_done
- import_queue:/home/import_queue
- cache:/home/cache
depends_on:
db:
condition: service_healthy
environment:
- IMPORT_QUEUE=${IMPORT_QUEUE}
- IMPORT_DONE=${IMPORT_DONE}
- TIME=${TIME}
- DBSCHEMA_PRODUCTION=${DBSCHEMA_PRODUCTION}
- SSL_MODE=${SSL_MODE}
running docker-compose up
results in :
root@gis FATAL: role "root" does not exist
Changing the healthcheck
in db service to :
healthcheck:
test: ["CMD-SHELL", "pg_isready -d ${POSTGRES_DBNAME} -U ${POSTGRES_USER}"]
resulted in :
dockerosm-db-1 | 2023-09-26 08:46:34.632 UTC \[236\] docker@gis LOG: provided user name (docker) and authenticated user name (root) do not match
dockerosm-db-1 | 2023-09-26 08:46:34.632 UTC \[236\] docker@gis FATAL: Peer authentication failed for user "docker"
dockerosm-db-1 | 2023-09-26 08:46:34.632 UTC \[236\] docker@gis DETAIL: Connection matched pg_hba.conf line 94: "local all all peer"
Why does it authenticate on root rather than the user provided?
This post postgres with docker compose gives FATAL: role "root" does not exist error seems relevant, but I was unable to understand how to apply it in the current case.
Any ideas on where to start?
I was suffering from the same issue with attempting to use pg_isready
health check with the kartoza/postgis image.
Switching from "pg_isready -d ${POSTGRES_DBNAME} -U ${POSTGRES_USER}"
to "pg_isready -h db"
as in this answer resolved the issue.