Technext
Technext

Reputation: 8107

GitLab setup using official PostgreSQL and GitLab docker container not working

I am trying to setup GitLab using separate docker containers for both GitLab and PostgreSQL. I am using RancherOS v1.0.3 with Kubernetes enabled. For now, all i want is to have a single node having both the containers. Later, i will look into configuring them on separate nodes.

[rancher@rancher-agent-2 ~]$ cat postgresql.sh
docker run --name=postgresql -d \
    --env 'DB_NAME=gitlabhq_production' \
    --env 'DB_USER=gitlab' --env 'DB_PASS=password' \
    --env 'DB_EXTENSION=pg_trgm' \
    --volume /opt/postgresql:/var/lib/postgresql \
    postgres:9.6.3

[rancher@rancher-agent-2 ~]$ cat gitlab.sh
docker run --name=gitlab -d --link postgresql:postgresql \
  -v /opt/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:9.3.9-ce.0

Now when i run the PostgreSQL container and try logging in, i get errors.

[rancher@rancher-agent-2 ~]$ docker exec -it postgresql bash
root@a6cef780c594:/# psql -d gitlabhq_production -U gitlab
psql: FATAL:  role "gitlab" does not exist

Seems the db (gitlabhq_production) has not been created.

root@a6cef780c594:/# psql -U postgres
psql (9.6.3)
Type "help" for help.

postgres=# \l
                                 List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
-----------+----------+----------+------------+------------+-----------------------
 postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
 template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
           |          |          |            |            | postgres=CTc/postgres
(3 rows)

Why is it not creating the db despite passing the parameters?

UPDATE:

PostgreSQL container log:

[rancher@rancher-agent-2 ~]$ docker logs postgresql
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
...
... 
LOG:  MultiXact member wraparound protections are now enabled
LOG:  database system is ready to accept connections
LOG:  autovacuum launcher started
 done
server started
ALTER ROLE


/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*
...
... 

Upvotes: 0

Views: 2750

Answers (1)

whites11
whites11

Reputation: 13260

You are using the wrong environment vars names:

DB_NAME should be POSTGRES_DB

DB_USER should be POSTGRES_USER

DB_PASS should be POSTGRES_PASSWORD

Check https://hub.docker.com/_/postgres/

Upvotes: 2

Related Questions