访问 GitLab-CE docker 容器中的 PostgreSQL

一、容器端口映射到主机

启动容器时,将容器内 5432 端口映射到主机 15432 端口(主机端口可自定),映射配置略,能碰到这个问题的童鞋,映射个端口应该小菜一碟。

二、让 PostgreSQL 开启外部端口监听

# 进入容器命令行
docker exec -it gitlab-ce bash;

# 修改相关配置
vi /var/opt/gitlab/postgresql/data/postgresql.conf;

...
listen_addresses = '*'    # what IP address(es) to listen on;
...
# 最大权限配置,仅测试用,生产环境建议控制权限

# 重启 PostgreSQL
gitlab-ctl restart postgresql;
重启后即可观察到,端口已监听:

三、添加访问白名单

# 在容器命令行操作
vi /var/opt/gitlab/postgresql/data/pg_hba.conf

...
host all all 0.0.0.0/0 trust # 全部允许
...
# 最大权限配置,仅测试用,生产环境建议控制权限

# 重启 PostgreSQL
gitlab-ctl restart postgresql;

四、查看 PSQL 信息

查看 PSQL 数据库名称和账号名称:
# 在容器命令行操作
more /var/opt/gitlab/gitlab-rails/etc/database.yml;
查看 PSQL 绑定用户名称:
# 在容器命令行操作
more /etc/passwd;

五、添加授权

创建一个同级用于访问 PostgreSQL 的用户并授权。这样的好处是无需更改 GitLab 相关配置就可以用其他方式登录数据库,不用了可以直接删除。这比直接修改 GitLab 默认用户的密码要方便得多。
# 在容器命令行操作
su - gitlab-psql # passwd 中找到的账户

psql -h /var/opt/gitlab/postgresql -d gitlabhq_production # database.yml 里面找到的数据库名称;

# 执行以下命令:
CREATE USER gitlab_psql WITH PASSWORD '[C43f(bD2kLpZ?bk';
GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production to gitlab_psql;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO gitlab_psql;

六、结束

完成以上步骤后,即可用 DBeaver 或其他工具,通过 IP:15432 访问到 GitLab-CE docker 容器中的 PostgreSQL 了。
消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息