Re: Running psql in a docker container

From: H <agents(at)meddatainc(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org,Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com>
Subject: Re: Running psql in a docker container
Date: 2024-07-11 20:28:35
Message-ID: 6D486324-937D-4894-957D-074DBDCEFEFF@meddatainc.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On July 11, 2024 3:31:37 PM EDT, Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> wrote:
>On 7/11/24 11:14, H wrote:
>> On July 11, 2024 11:06:02 AM GMT-04:00, Adrian Klaver
><adrian(dot)klaver(at)aklaver(dot)com> wrote:
>>> On 7/11/24 07:57, H wrote:
>>>> I used to successfully run psql server 13 in a CentOS 7 docker
>>> container with CentOS 7 as the host operating system. I have now
>>> upgraded that system to Rocky Linux 9 as the host operating system
>and
>>> modifying my container to also use Rocky Linux 9 and psql server 16.
>>>>
>>>> I can successfully get the container up and running and can connect
>>> to it. However, I have not managed to modify the initdb statement to
>>> use en_US.UTF-8 for all databases.
>>>>
>>>> In the old container I used:
>>>>
>>>> su - postgres -c "/usr/pgsql-13/bin/initdb -D
>/var/lib/pgsql/13/data/
>>> -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'"
>>>>
>>>> but this does not work with psql 16. I tried:
>>>>
>>>> su - postgres -c "/usr/pgsql-16/bin/initdb -D
>/var/lib/pgsql/16/data/
>>> -E 'UTF-8' --lc-lang='en_US'"
>
>1) Per:
>
>https://www.postgresql.org/docs/16/app-initdb.html
>
>lc_lang does not exist and I get:
>
>/usr/lib/postgresql/16/bin/initdb: unrecognized option
>'--lc-lang=en_US'
>
>2) On Ubuntu 22.04 doing:
>
> /usr/lib/postgresql/16/bin/initdb -D postgres/16/data/ -E 'UTF-8'
>--lc-collate='en_US.utf8' --lc-ctype='en_US.utf8'
>
>I get:
>
>postgres=# \l
>List of databases
>-[ RECORD 1 ]-----+--------------------
>Name | postgres
>Owner | aklaver
>Encoding | UTF8
>Locale Provider | libc
>Collate | en_US.utf8
>Ctype | en_US.utf8
>ICU Locale |
>ICU Rules |
>Access privileges |
>-[ RECORD 2 ]-----+--------------------
>Name | template0
>Owner | aklaver
>Encoding | UTF8
>Locale Provider | libc
>Collate | en_US.utf8
>Ctype | en_US.utf8
>ICU Locale |
>ICU Rules |
>Access privileges | =c/aklaver +
> | aklaver=CTc/aklaver
>-[ RECORD 3 ]-----+--------------------
>Name | template1
>Owner | aklaver
>Encoding | UTF8
>Locale Provider | libc
>Collate | en_US.utf8
>Ctype | en_US.utf8
>ICU Locale |
>ICU Rules |
>Access privileges | =c/aklaver +
> | aklaver=CTc/aklaver
>
>3) What does locale -a return on your machine?
>
>
>>>>
>>>> and variations thereof with no success.
>>>
>>> Without a definition of what '... no success' means there is no real
>>> way
>>> to answer this.
>>>
>>>>
>>>> Any suggestions on what I have missed?
>>>>
>>>> Thank you.
>>>>
>>>>
>>
>> Good question! ”No success” meant that I have not been able to figure
>out how to have new databases default to en_US.UTF-8, instead they
>default to C.UTF-8.
>>
>> What is the proper syntax for pgsql 16 for this? I could not get the
>example given in the docs to work...

You are right, the locale is now called en_US.utf8 and with that correction I get the expected result.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Tomas Vondra 2024-07-11 20:38:56 Re: page is not marked all-visible but visibility map bit is set in relation "pg_statistic"
Previous Message H 2024-07-11 20:25:39 Re: Running psql in a docker container