From: | Mladen Gogala <gogala(dot)mladen(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: WARNING: could not open statistics file "pg_stat_tmp/global.stat": Operation not permitted |
Date: | 2022-09-09 04:03:33 |
Message-ID: | 8402e6d2-49a0-51d0-2693-d2596c48a25b@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 9/8/22 23:05, Perry Smith wrote:
> This is an issue when PostgreSQL is running inside a container. In my
> quest to find an answer, I’ve discovered three instances that it has
> come up and various people have talked about fixes but no one seemed
> to notice what I found.
>
> I opened an issue here[1].
>
> From within the container, files which I assume are created by
> PostgreSQL are ending up being owned by root rather than Postgres.
> Thus, to me, it appears to NOT be an issue of mapping internal UIDs
> and GIDs to external IDs since there should not be anything outside
> the PostgreSQL container creating files inside Postgres’ data directory.
>
> The reason I’m sending this note to the general list is to ask how bad
> is this error? Some “solutions” are to make the pg_stat_tmp directory
> internal to the image and that somehow resolves the issue but I don’t
> think anyone really understands why and things like that bother me.
> But I’m also curious if that appears to be a viable solution. The
> result will be that when the Postgres is stopped and the container
> exited, the next time Postgres starts back up, the pg_stat_tmp
> directory will be gone. Is that ok? Does Postgres store anything
> that that needs to survive a restart?
>
> Thank you for your help,
> Perry
> [1] https://github.com/docker-library/docs/issues/2188#issue-1367170047
>
Hi Perry,
You probably need to fix your Dockerfile because your postgres seems to
be running as root. Here is my Dockerfile:
FROM oraclelinux:8
LABEL Description="This install PostgreSQL 14 on top of Oracle Linux 8"
LABEL maintainer="Mladen Gogala"
RUN dnf -y update
COPY RPMS/pgdg-redhat-repo-latest.noarch.rpm /tmp
COPY RPMS/pg_hint_plan14-1.4-1.el8.x86_64.rpm /tmp/
COPY RPMS/pg_hint_plan14-llvmjit-1.4-1.el8.x86_64.rpm /tmp/
# Install PostgreSQL software
RUN dnf localinstall -y /tmp/pgdg-redhat-repo-latest.noarch.rpm
RUN dnf -qy module disable postgresql
RUN dnf -y install postgresql14
RUN dnf -y install postgresql14-libs
RUN dnf -y install postgresql14-server
RUN dnf -y install postgresql14-llvmjit
RUN dnf -y install postgresql14-contrib
# Install pg_hint_plan 1.4
RUN cd /tmp;dnf -y localinstall `ls *.rpm`
# Cleanup
RUN rm -f /tmp/*.rpm
RUN dnf clean all
# Copy postgresql.auto.conf (modified parameters) and run initdb
USER postgres
ARG PGPASSWD="qwerty"
ENV PGDATA=/var/lib/pgsql/14/data
ENV PATH=/usr/pgsql-14/bin:/usr/bin:/usr/local/bin
RUN echo "$PGPASSWD">/var/lib/pgsql/14/pgcluster.pwd
RUN initdb -A password --pwfile=/var/lib/pgsql/14/pgcluster.pwd
RUN echo "host all all 0.0.0.0/0 md5">>$PGDATA/pg_hba.conf
COPY --chown=postgres:postgres RPMS/postgresql.auto.conf
/var/lib/pgsql/14/data
# Finish
EXPOSE 5432/tcp
ENTRYPOINT ["postgres"]
Please note that I switch users in the file and that owners are
switched. I don't have any issues with the container built this way. I
have another container which is built by untaring backup of my sample
database. I use ADD command to untar it to $PGDATA. Also, my trick with
putting the modified parameters into postgresql.auto.conf goes contrary
to the Postgres recommendations. You may want to avoid doing that. I
haven't pushed the image to the Docker hub because I'm still working on it.
--
Mladen Gogala
Database Consultant
Tel: (347) 321-1217
https://dbwhisperer.wordpress.com
From | Date | Subject | |
---|---|---|---|
Next Message | Perry Smith | 2022-09-09 04:08:25 | Re: ***SPAM*** Re: WARNING: could not open statistics file "pg_stat_tmp/global.stat": Operation not permitted |
Previous Message | Tom Lane | 2022-09-09 03:42:50 | Re: WARNING: could not open statistics file "pg_stat_tmp/global.stat": Operation not permitted |