在已经运行的docker容器里面使用中文

配置ldap

公司搭建的gitlab现在需要开启ldap服务,也就是这样就可以用公司的域账号登陆gitlab,而不用开发一个一个去注册账号了。

开启ldap登陆的任务光荣的落到了我身上,于是我就登陆到gitlab服务器一看,嚯,这还是在容器下启动的,如图:
paradin

于是我就docker exec -it 容器ID号 /bin/bash登陆到这个容器里,编辑/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ldap:    
enabled: true
sync_time:
host: '公司域账号服务器IP地址'
port: 389
uid: 'sAMAccountName'
method: 'plain' # "tls" or "ssl" or "plain"
bind_dn: 'dahuatech\Ldap_System'
password: '对应的密码'
active_directory:
allow_username_or_email_login:
lowercase_usernames:
base:
user_filter:

但是在填写到base的时候发现了一个问题,公司的base是中文的,是'OU=大数据研究院,OU=研发中心,OU=大华技术,DC=dahuatech,DC=com',但是在文件里输入中文却是乱码,如图:
paradin

容器默认是不支持中文的,在容器里的命令行输入中文也是空白。那么面对一个已经运行的容器,如何正常的输入中文呢?

答案是:使用docker exec -it 容器ID号 env LANG=C.UTF-8 /bin/bash登陆,这样就能正常使用中文了,如图:
paradin

gitlab-ctl restart之后,登陆到gitlab页面一看,已经添加ldap访问方式:
paradin

取消“注册”功能

修改好配置文件gitlab.yml之后,现在就要把“注册”功能去掉,这样以后都统一用公司的域账号登陆,避免一些乱七八糟的用户来注册乱七八糟的账号。

首先用root账号登陆到gitlab里,在网页里进入到admin area,如图:
paradin

然后再点击最下面的settings,选择Sign-up restrictions,然后把Sign-up enabled前面的勾点掉,如图:
paradin

保存改变之后,退出root账号,重新看一下,gitlab的注册功能就暂时被取消了,需要的时候再开即可。

配置域名

为了方便记忆,给gitlab服务配置一个域名,在阿里云的域名解析控制台给gitlab配置了域名之后,还要在gitlab.yml手动更改hostname,把hostname改成域名的样子,如图:
paradin

这样没有结束,因为网页里的url还是显示外网IP而非域名,如下:
paradin

此时需要重启,重启的命令是gitlab-ctl restart,重启完了之后url也会发生变化。这样才算完整的配置了域名:
paradin

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------