sameersbn / sameersbn/docker-gitlab
Goddamn it. Solved except: Postgres FATAL role root does not exist
Nobody has claimed this yet.
- Dominant language
- Shell
- Stars
- 8.1k
- Forks
- 2.1k
- Avg merge
- 17h 47m
- Merged PRs (30d)
- 7
Description
I destroyed my Postgres database because I did not define an HTTP connect proxy for the database. The update script from Postgres 10 to 12 uses apt. But apt needs my proxy to get out. After docker-compose down and up -d, GitLab booted up, but all users and repos were gone!
The recovery steps were approximate:
# Shut down and delete four containers and the network:
docker-compose down
mkdir ./kaputt-2020-05-30/
mv ./volume_gitlab/data/ ./kaputt-2020-05-30/
mv ./volume_postgresql/ ./kaputt-2020-05-30/
mv ./volume_redis/ ./kaputt-2020-05-30/
# Change the docker-compose.yml file to the versions of the last backup: sameersbn/postgresl:10-2 and sameersbn/gitlab:12.9.5 !
docker-compose up -d
# Put the last backup as the only backup:
cp ./kaputt-2020-05-30/data/backups/1590793353_2020_05_29_12.9.5_gitlab_backup.tar ./volume_gitlab/data/backups/
docker-compose exec gitlab bash
su - git
export PGUSER=gitlab
export PGPASSWORD=***
cd gitlab
# Restore the backup:
bundle exec rake gitlab:backup:restore RAILS_ENV=production
!!! Define your HTTP connect proxy in /etc/apt/apt.conf and mount it in docker-compose.yml file under volumes !!!
version: '3.7'
services:
redis:
command:
- --loglevel warning
image: sameersbn/redis:4.0.9-3
networks:
blubb:
restart: always
volumes:
- ./volume_redis:/var/lib/redis:Z
postgresql:
environment:
- DB_USER=gitlab
- DB_PASS=***
- DB_NAME=gitlabhq_production
- DB_EXTENSION=pg_trgm
# image: sameersbn/postgresql:10-2
image: sameersbn/postgresql:12-20200524
restart: always
volumes:
- /etc/apt/apt.conf:/etc/apt/apt.conf
- ./volume_postgresql:/var/lib/postgresql:Z
networks:
blubb:
gitlab:
depends_on:
- redis
- postgresql
environment:
# - http_proxy=
# - https_proxy=
- http_proxy=http://corporate-proxy:8080
- https_proxy=http://corporate-proxy:8080
- no_proxy=127.0.0.1,localhost,redis,postgresql,gitlab,registry
- DEBUG=false
- DB_ADAPTER=postgresql
- DB_HOST=postgresql
- DB_PORT=5432
- DB_USER=gitlab
- DB_PASS=***
- DB_NAME=gitlabhq_production
- REDIS_HOST=redis
- REDIS_PORT=6379
- TZ=Europe/Berlin
- GITLAB_TIMEZONE=Berlin
- GITLAB_HTTPS=true
- SSL_SELF_SIGNED=false
- GITLAB_HOST=****
- GITLAB_SSH_HOST=****
- GITLAB_PORT=443
- GITLAB_SSH_PORT=10122
- GITLAB_RELATIVE_URL_ROOT=
- GITLAB_SECRETS_DB_KEY_BASE=**********
- GITLAB_SECRETS_SECRET_KEY_BASE=**********
- GITLAB_SECRETS_OTP_KEY_BASE=**********
- GITLAB_ROOT_PASSWORD=*********
- GITLAB_ROOT_EMAIL=********@*******
- GITLAB_NOTIFY_ON_BROKEN_BUILDS=true
- GITLAB_NOTIFY_PUSHER=false
- GITLAB_EMAIL=********@*******
- GITLAB_EMAIL_REPLY_TO=********@*******
- GITLAB_INCOMING_EMAIL_ADDRESS=********@*******
- GITLAB_BACKUP_SCHEDULE=daily
- GITLAB_BACKUP_TIME=01:00
- SMTP_ENABLED=true
- SMTP_DOMAIN=*******
- SMTP_HOST=**
- SMTP_PORT=25
- SMTP_USER=
- SMTP_PASS=
- SMTP_STARTTLS=false
- SMTP_AUTHENTICATION=false
- IMAP_ENABLED=false
- IMAP_HOST=imap.gmail.com
- IMAP_PORT=993
- IMAP_USER=mailer@example.com
- IMAP_PASS=password
- IMAP_SSL=true
- IMAP_STARTTLS=false
- OAUTH_ENABLED=false
- OAUTH_AUTO_SIGN_IN_WITH_PROVIDER=
- OAUTH_ALLOW_SSO=
- OAUTH_BLOCK_AUTO_CREATED_USERS=true
- OAUTH_AUTO_LINK_LDAP_USER=false
- OAUTH_AUTO_LINK_SAML_USER=false
- OAUTH_EXTERNAL_PROVIDERS=
- OAUTH_CAS3_LABEL=cas3
- OAUTH_CAS3_SERVER=
- OAUTH_CAS3_DISABLE_SSL_VERIFICATION=false
- OAUTH_CAS3_LOGIN_URL=/cas/login
- OAUTH_CAS3_VALIDATE_URL=/cas/p3/serviceValidate
- OAUTH_CAS3_LOGOUT_URL=/cas/logout
- OAUTH_GOOGLE_API_KEY=
- OAUTH_GOOGLE_APP_SECRET=
- OAUTH_GOOGLE_RESTRICT_DOMAIN=
- OAUTH_FACEBOOK_API_KEY=
- OAUTH_FACEBOOK_APP_SECRET=
- OAUTH_TWITTER_API_KEY=
- OAUTH_TWITTER_APP_SECRET=
- OAUTH_GITHUB_API_KEY=
- OAUTH_GITHUB_APP_SECRET=
- OAUTH_GITHUB_URL=
- OAUTH_GITHUB_VERIFY_SSL=
- OAUTH_GITLAB_API_KEY=
- OAUTH_GITLAB_APP_SECRET=
- OAUTH_BITBUCKET_API_KEY=
- OAUTH_BITBUCKET_APP_SECRET=
- OAUTH_SAML_ASSERTION_CONSUMER_SERVICE_URL=
- OAUTH_SAML_IDP_CERT_FINGERPRINT=
- OAUTH_SAML_IDP_SSO_TARGET_URL=
- OAUTH_SAML_ISSUER=
- OAUTH_SAML_LABEL="Our SAML Provider"
- OAUTH_SAML_NAME_IDENTIFIER_FORMAT=urn:oasis:names:tc:SAML:2.0:nameid-format:transient
- OAUTH_SAML_GROUPS_ATTRIBUTE=
- OAUTH_SAML_EXTERNAL_GROUPS=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_EMAIL=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_USERNAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_FIRST_NAME=
- OAUTH_SAML_ATTRIBUTE_STATEMENTS_LAST_NAME=
- OAUTH_CROWD_SERVER_URL=
- OAUTH_CROWD_APP_NAME=
- OAUTH_CROWD_APP_PASSWORD=
- OAUTH_AUTH0_CLIENT_ID=
- OAUTH_AUTH0_CLIENT_SECRET=
- OAUTH_AUTH0_DOMAIN=
- OAUTH_AZURE_API_KEY=
- OAUTH_AZURE_API_SECRET=
- OAUTH_AZURE_TENANT_ID=
# Registry
- GITLAB_REGISTRY_ENABLED=true
- GITLAB_REGISTRY_HOST=******
- GITLAB_REGISTRY_PORT=443
- GITLAB_REGISTRY_API_URL=https://******/
- GITLAB_REGISTRY_KEY_PATH=/certs/registry.key
extra_hosts:
- "******:<REVERSE_PROXY_IP>"
# image: sameersbn/gitlab:12.9.5
image: sameersbn/gitlab:13.0.3
networks:
blubb:
ports:
- "10099:80"
- "10122:22"
restart: always
volumes:
- ./certs:/certs
# - ./volume_gitlab/config/gitlab.yml:/home/git/gitlab/config/gitlab.yml:Z
- ./volume_gitlab/data/:/home/git/data/:Z
registry:
environment:
- REGISTRY_LOG_LEVEL=info
- REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/registry
- REGISTRY_AUTH_TOKEN_REALM=https://****/jwt/auth
- REGISTRY_AUTH_TOKEN_SERVICE=container_registry
- REGISTRY_AUTH_TOKEN_ISSUER=gitlab-issuer
- REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE=/certs/registry.crt
- REGISTRY_STORAGE_DELETE_ENABLED=true
extra_hosts:
- "****:<REVERSE_PROXY_IP>"
image: registry:2.7.1
networks:
blubb:
ports:
- "5099:5000"
restart: always
volumes:
- ./volume_gitlab/shared/registry:/registry
- ./certs:/certs
networks:
blubb:
Now you can change versions in Postgres image and GitLab image - one after the other. Works.
docker-compose logs -f
postgresql_1 | 2020-05-30 19:37:55.269 UTC [300] FATAL: role "root" does not exist
Please help for the last step.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the postgresql service in docker-compose.yml and the output from docker-compose logs -f, focusing on the FATAL role "root" does not exist message. Trace which database operation produces that message and document a recovery path that completes the backup restore without the error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, docker-compose, postgresql
- Domain
- databases, devops, infrastructure
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100