目录
1、通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。
2、准备好这三个目录之后, 就可以开始运行 Docker 镜像了。 我的建议是使用unless-stopped 作为重启策略,因为这样可以手工停止容器, 方便维护。
8.注意:这样docker在服务器关闭重启后也会关闭,容器不能自动重启,如mysql,redis等服务不能自动重启。
1、下载jenkins的docker镜像
Jenkins仓库地址:https://hub.docker.com/r/jenkinsci/blueocean/
进入后
在自己的linux服务器直接执行以下命令,会下载最新的镜像。
#从docker仓库中下载jenkins到本地
docker pull jenkinsci/blueocean
检查是否下载成功:
#查看本地镜像命令
docker images
当出现如下所示时,证明拉取成功。
2、启动Jenkins镜像
引自jenkins官网启动命令,并稍作了修改。
docker run \
-u root \ #docker容器中以root权限启动
--rm \ #关闭时自动删除Docker容器
-d \ #在后台运行容器(即“分离”模式)并输出容器ID
-p 8080:8080 \ #docker容器的8080端口绑定宿主机8080端口
-p 50000:50000 \ #docker容器的50000端口绑定宿主机50000端口。默认情况下,基于JNLP的Jenkins代理通过TCP端口50000与Jenkins主站进行通信。
-v /var/jenkins_home:/var/jenkins_home \ #指定宿主机目录挂载容器文件目录,方便查看管理员密码,也为了后面git和maven安装目录的使用。
-v /var/run/docker.sock:/var/run/docker.sock \ #指定宿主机目录挂载容器文件。
--name jenkins jenkinsci/blueocean #给容器起个名字,方便后面寻找
合并一行
docker run -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name jenkins jenkinsci/blueocean
执行命令效果
查看启动日志
#jenkins是给容器起的名字,可以用容器ID
docker logs jenkins
当出现以下日志信息后,证明启动成功了
3、解锁jenkins,并创建管理员
当您第一次访问新的Jenkins实例时,系统会要求您使用自动生成的密码对其进行解锁。
输入你linux服务器的IP:8080进入管理入口,出现以下界面
由于宿主机已经挂载容器文件相同目录,所以找寻管理密码,直接服务制界面出现的地址,查看密码即可
#注意:initialAdminPassword是个文件,不是目录
vim /var/jenkins_home/secrets/initialAdminPassword
或者查看docker日志也能找到管理密码
找到密码后,直接复制到输入框中,点击继续,进入一下界面,证明解锁成功
点击安装推荐的插件即可,下面就开始下载插件
下载完成后会让创建一个管理员用户,需要设置用户名、密码、名称、邮箱,略过。然后是配置实例url,默认配置即可。
管理员相关配置完成后,需要重启,点击重启。当出现以下日志,证明重启完成了
浏览器输入你的服务器IP:8080,便可进入到登录页,输入上面设置的管理员用户名和密码即可登录到管理后台。
4、安装需要的插件(maven和热部署)
进入到管理后台后,点击系统管理->插件管理->可选插件
过滤搜索框输入Maven Integration来搜索Maven Integration插件。
点击直接安装。下面搜索并安装热部署插件Deploy to container
注意安装完这俩插件了,需要重启jenkins。
后面加上git和maven的集成。
5.安装gitlab
git search gitlab
git pull gitlab/gitlab-ce
等待下载完成
docker ps
docker images
6.运行
1、通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。
mkdir -p /data/gitlab/etc
mkdir -p /mnt/gitlab/log
mkdir -p /mnt/gitlab/data
2、准备好这三个目录之后, 就可以开始运行 Docker 镜像了。 我的建议是使用unless-stopped 作为重启策略,
因为这样可以手工停止容器, 方便维护。
完整的运行命令如下:
docker run \
--detach \
--publish 8443:443 \
--publish 8090:80 \
--name gitlab \
--restart unless-stopped \
-v /data/gitlab/etc:/etc/gitlab \
-v /data/gitlab/log:/var/log/gitlab \
-v /data/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce
3. 配置GitLab主机名
1、修改/data/gitlab/etc/gitlab.rb
把external_url改成部署机器的域名或者IP地址
vim /data/gitlab/etc/gitlab.rb
2、修改/data/gitlab/data/gitlab-rails/etc/gitlab.yml
vim /data/gitlab/data/gitlab-rails/etc/gitlab.yml
找到关键字 * ## Web server settings *
将host的值改成映射的外部主机ip地址和端口,这里会显示在gitlab克隆地址
到此为止,gitlab的web管理页面就可以正常访问
按照提示是输入密码,此时的账号为root
登录进去就是上图这样,然后就可以
如果还是不能正常访问的话,检查端口是否被占用?
7。端口不能访问端口被占用(这里不做)
如果端口号被占用,改了默认的80端口,后面要接端口号
1 |
|
修改NGINX监听的端口为9999
1 2 |
|
如果8080端口被Tomcat占用,会出现502的页面
因此需要修改unicorn的配置,如下
1 2 3 4 5 6 7 |
|
修改Gitlab数据存储路径(这里不做)
默认的Gitlab数据存储路径,在目录/var/opt/gitlab/git-data下,防止以后数据过大,所以可以修改路径存储为/data/gitlabData
1 2 3 4 5 6 |
|
1 2 |
|
设置完后,过一段使用时间,可以看到该目录下的resposities
配置并启动GitLab
像上面步骤修改了GitLab的ip地址一样,临时修改了GitLab的配置之后,得执行如下的命令,应用重新配好的配置并重启GitLab,然后查看GitLab的状态。
因为是容器,所以要进入到gitlab容器中执行命令
1 |
|
然后
1 2 3 |
|
登陆
打开浏览器,输入本机的ip地址并登陆
1 |
|
默认帐户的用户名是root,第一次访问时,将被重定向到密码重置屏幕,登录后,您可以更改用户名。
常用的几个Gitlab命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
错误
1、docker启动报错信息如下
1 |
|
解决
检查docker端口映射是否冲突
重启docker服务后再启动容器
1 2 |
|
参考:https://my.oschina.net/ZL520/blog/3033001
https://www.cnblogs.com/zuxing/articles/9329152.html
https://hub.docker.com/r/beginor/gitlab-ce/
8.注意:这样docker在服务器关闭重启后也会关闭,容器不能自动重启,如mysql,redis等服务不能自动重启。
解决:
sudo docker update mysql --restart=always
sudo docker update redis --restart=always
其中以上命令中的mysql,redis等都为容器名,要根据安装版本进行实际配置