Good evening, I am trying to create a Dockerfile for development purposes, which would run Jetty and PostgreSQL. The PostgreSQL related part is below:
FROM postgres:17-alpine3.20 RUN apk update && apk upgrade && apk add --no-cache curl wget openjdk21 tini # Tell docker-entrypoint.sh to create superuser "postgres" # with password "mypassword" and database "postgres" ENV POSTGRES_PASSWORD mypassword # Tell docker-entrypoint.sh to change these params in postgresql.conf ENV POSTGRES_INITDB_ARGS "--set port=6432 --set max_connections=20 --set max_wal_size=2GB" # The PostgreSQL port is changed from 5432 to 6432 to emulate pg_bouncer ENV PGPORT 6432 ENV PGUSER words ENV PGPASSWORD mypassword WORKDIR /docker-entrypoint-initdb.d COPY ["run-after-initdb.sh", "."] RUN chmod +x run-after-initdb.sh && cat run-after-initdb.sh USER postgres EXPOSE 6432 9090 ENTRYPOINT ["/sbin/tini", "--"] CMD ["sh", "-c", "docker-entrypoint.sh postgres & cd $JETTY_BASE && sleep 10 && java -Djdbc.drivers=org.postgresql.Driver -jar $JETTY_HOME/start.jar"] And below is my run-after-initdb.sh script: #!/bin/sh createuser --username=postgres words psql --username=postgres -c "GRANT USAGE ON SCHEMA public TO words;" psql --username=postgres -c "ALTER USER words PASSWORD 'mypassword';" for L in de en ru fr nl pl; do createdb --username=postgres --owner=words words_$L cd /dict/$L && psql words_$L < words_$L.sql done Then I build and run the docker image and that works without errors: # docker build -t my_docker_image --progress=plain . # docker run --name my_container -p 8080:8080 -p 6432:6432 my_docker_image When I connect to the docker container via terminal, I am able to connect with "psql words_de" command. But the "psql -h localhost words_de" command fails: psql: error: connection to server at "localhost" (127.0.0.1), port 6432 failed: Connection refused Is the server running on that host and accepting TCP/IP connections? connection to server at "localhost" (::1), port 6432 failed: Address not available Is the server running on that host and accepting TCP/IP connections? I need the connection via 127.0.0.1 though, because of my Java servlet hosted by the Jetty. I have looked at the config files and env vars: # ls -al /var/run/postgresql/ srwxrwxrwx 1 postgres postgres 0 Dec 1 19:06 .s.PGSQL.6432 -rw------- 1 postgres postgres 64 Dec 1 19:06 .s.PGSQL.6432.lock # echo $PGDATA /var/lib/postgresql/data # grep -v '^#' $PGDATA/pg_hba.conf local all all trust host all all 127.0.0.1/32 trust host all all ::1/128 trust local replication all trust host replication all 127.0.0.1/32 trust host replication all ::1/128 trust # grep -v '^.*#' $PGDATA/postgresql.conf listen_addresses = '*' max_wal_size = 2GB min_wal_size = 80MB log_timezone = UTC datestyle = 'iso, mdy' timezone = UTC default_text_search_config = 'pg_catalog.english' Is anybody able spotting, what am I doing wrong here? Thank you TLDR "psql words_de" works, but "psql -h localhost words_de" does not Best regards Alex