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
9docker 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
5docker 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
20docker 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
7su 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
4psql 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和redis1
2
3
4
5
6
7postgresql['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'