gitlab_dockerlized

docker化安装gitlab(分离redis和postgresql服务)

步骤:
1 拉取postgresql docker镜像

1
docker pull postgresql

2 拉取redis docker镜像
1
docker pull redis

3 拉取gitlab docker镜像
1
docker pull gitlab/gitlab-ce

4 编辑postgresql启动脚本postgresql.sh,内容如下:
1
2
3
4
5
6
7
8
9
docker run \
--name gitlab-postgresql \
-d \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' \
--env 'DB_PASS=password' \
--env 'DB_EXTENSION=pg_trgm' \
--volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \
postgres

给脚本添加执行权限
1
chmod +x postgresql.sh

5 编辑redis启动脚本redis.sh,内容如下:
1
2
3
4
5
docker run \
--name gitlab-redis \
-d \
--volume /srv/docker/gitlab/redis:/var/lib/redis \
redis

给脚本添加执行权限
1
chmod +x redis.sh

6 编辑gitlab启动脚本gitlab.sh,内容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker run \
--name gitlab \
-d \
--link gitlab-postgresql:postgresql \
--link gitlab-redis:redisio \
--publish 10022:22 \
--publish 10080:80 \
--env 'GITLAB_PORT=10080' \
--env 'GITLAB_SSH_PORT=10022' \
--env 'GITLAB_SECRETS_DB_KEY_BASE=jMHCqz7v4HWjm9KJHfnPCWmRv9Hft4q4xvFPWcRPdvnCcmHvFsdzgcRqdXRzmmMp' \
--env 'GITLAB_SECRETS_SECRET_KEY_BASE=WpVrsCVjnm7mrhcmtHrqfKtCHWfq9k4nNKnLCszcFtkqj9X9MXzngdPrwxzfNN9J' \
--env 'GITLAB_SECRETS_OTP_KEY_BASE=c7rLr3hwdXLkKbMXwKdfddX7dkMxdCHJPzHnP4tstqJm4mdxwVLnKTvFCHcdXbFP' \
--env 'DB_HOST=172.17.0.2' \
--env 'DB_NAME=gitlabhq_production' \
--env 'DB_USER=gitlab' \
--env 'DB_PASS=password' \
--volume /srv/docker/gitlab/gitlab/config:/etc/gitlab \
--volume /srv/docker/gitlab/gitlab/logs:/var/log/gitlab \
--volume /srv/docker/gitlab/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce

给脚本添加执行权限
1
chmod +x gitlab.sh

7 启动postgresql并进入终端
1
2
./postgresql.sh
docker run -it postgresql /bin/bash

以postgres用户连接数据库,创建gitlab服务所需要的数据库
1
2
3
4
5
6
7
su postgresql
psql
CREATE ROLE gitlab with LOGIN CREATEDB PASSWORD 'password';
CREATE DATABASE gitlabhq_production;
GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production to gitlab;
\q
exit

仍然以postgresql用户连接到gitlabhq_production数据库,开启pg_trgm扩展
1
2
3
4
psql gitlabhq_production
CREATE EXTENSION pg_trgm;
\q
exit

8 启动redis服务
1
./redis.sh

9 先启动一次gitlab,然后停止掉
./gitlab.sh
(等待大约1分钟后)
通过docker ps 查看gitlab的id
然后关闭并删除
docker stop docker_id_geted_before
docker rm docker_id_geted_before
这样,应该在宿主机的/srv/docker/gitlab/gitlab/config目录下生成了gitlab.rb文件
10 编辑gitlab.rb文件,指定使用外部的postgresql和redis
1
2
3
4
5
6
7
postgresql['enable'] = false
redis['enable'] = false
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
gitlab_rails['db_database'] = 'gitlabhq_production'
gitlab_rails['db_username'] = 'gitlab'
gitlab_rails['db_password'] = 'password'