使用 Docker 在 Windows 上安装 gitlab

Posted

技术标签:

【中文标题】使用 Docker 在 Windows 上安装 gitlab【英文标题】:install gitlab on Windows with Docker 【发布时间】:2018-06-11 23:25:45 【问题描述】:

我搜索了很多,发现GitLab Community Edition没有安装在Windows上,所以现在我想在Docker的帮助下安装它。我不知道这是否可能以及我该怎么做?

【问题讨论】:

安装 Docker for Windows,然后关注my answer here。它避免了“卷问题”并支持备份和恢复。 【参考方案1】:

    您需要为 Windows 安装 Docker。

    Docker 的共享驱动器(在 Docker 的设置 > 共享驱动器中)。例如,驱动器 E:

    然后,您需要在驱动器 E 上创建 3 个目录:(e:\gitlab\confige:\gitlab\logse:\gitlab\data

    从命令提示符运行:

    docker run --detach --hostname gitlab.yourdomain.ru 
    --publish 443:443 --publish 80:80 --publish 22:22 --name gitlab 
    --restart always --volume e:\gitlab\config:/etc/gitlab 
    --volume e:\gitlab\logs:/var/log/gitlab 
    --volume e:\gitlab\data:/var/opt/gitlab gitlab/gitlab-ce:latest
    

就是这样!您现在已成功运行 GitLab 映像。

【讨论】:

在安装本地磁盘时(如您的示例),无法在 Win 上使用 gitlab - 出现错误:Mixlib::ShellOut::ShellCommandFailed: Failed asserting that ownership of "/var/opt/gitlab/.ssh" was git:git 这意味着您的 .ssh 文件夹具有错误的访问权限。尝试删除 e:\gitlab\data 中的 .ssh 文件夹。 问题仅出在/var/opt/gitlab 文件夹上。你可以挂载它,但是你将无法正常启动 gitlab docker 实例。在撰写本文时,对于 docker for windows 来说,还没有简单的解决方法。这是官方论坛上的一个帖子:gitlab.com/gitlab-org/omnibus-gitlab/issues/2280 @Alex,我通过将 /var/opt/gitlab 更改为 /var/opt 解决了这个问题 实际上我建议的解决方案挂载的文件夹是空的,但至少 docker 运行没有崩溃【参考方案2】:

是的,您可以使用 Docker 在 Windows 上运行 gitlab-ce。首先,确保 docker 安装在 Windows 上,否则install it.

在GitLab Docker images 下可以找到有关如何使用 Docker 运行 gitlab 的详细文档,包括如何访问 Web 界面。

【讨论】:

我不得不把它标记下来,因为该文档是针对 Windows 内部的 Linux Docker 的,这意味着 Gitlabs 的说明本身需要 Linux 知识。【参考方案3】:

您可以从Expose GitLab on different ports 部分查看 gitlab 文档。

在开始安装之前,在“ gitlab”文件夹。并使用 docker run 命令运行您的gitlab-ce 图像。Gitlab 应该首先运行。

请注意,我将使用 8082 端口作为 gitlab 服务器。您可以将其更改为任何端口号。

1-打开 cmd 并显示您的 IP 地址。您需要在网络适配器中查找 IPv4 地址:

ipconfig

2-使用此命令运行您的 docker-ce 映像:

docker run --detach --hostname YOUR-IP-ADRESS --publish 8082:8082 --publish 2282:22 --name gitlab --restart always --volume D:\DevOps\Gitlab/config:/etc/gitlab --volume D:\DevOps\Gitlab/logs:/var/log/gitlab --volume D:\DevOps\Gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

3-在 docker 终端中(在 docker gui 应用程序中按下“cli”按钮)去这里:

cd etc/gitlab

nano gitlab.rb

4-转到 gitlab.rb 的文件末尾并写下这些行:

external_url "http://your-ip-address:8082"

gitlab_rails['gitlab_shell_ssh_port'] = 2282

5-保存并关闭gitlab.rb文件后输入此代码进行重新配置:

gitlab-ctl reconfigure

6-删除您的 docker 容器并再次使用此命令运行:

docker run --detach --hostname YOUR-IP-ADRESS --publish 8082:8082 --publish 2282:22 --name gitlab --restart always --volume D:\DevOps\Gitlab/config:/etc/gitlab --volume D:\DevOps\Gitlab/logs:/var/log/gitlab --volume D:\DevOps\Gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

【讨论】:

我使用 127.0.0.1 作为 IP 地址,这基本上意味着本地计算机。此外,在尝试点击 127.0.0.1:8082 后,系统提示我提供管理员密码,但总是失败。为了解决这个问题,我可以再次进入 CLI 并运行以下命令来设置 root 密码:# gitlab-rake "gitlab:password:reset[root]" 然后输入两次新密码。现在,当您点击127.0.0.1:8082 时,您可以以“root”身份和新密码登录。 您不应在 Docker CLI 上使用默认的 localhost IP。因为 Docker 创建了一个虚拟系统。此虚拟系统具有不同的 IP 号。当你在 docker 上点击 localhost 或 127.0.0.1 时,你的意思是与你的真实系统 IP 不同的 IP。所以它可能是安装问题。请从第一步开始重新安装。 你好@ÖmürAlçin。我试图从 ipconfig 中了解我必须使用哪个 IP。我想在我的机器上运行 GitLab Docker 来测试它,但我应该使用哪个主机名?谢谢。 嗨@Davide3i,你需要找到内部IP地址。如果您使用的是 wifi,请在“无线 LAN 地址”中搜索,否则转到“以太网适配器”。然后找到“IPv4地址”是你的内部IP 那么,考虑到这些地址不是静态的,我每次重新启动主机时都必须更改主机名吗?谢谢。【参考方案4】:

我在这里找到了解决方案,在 Docker for Windows 中安装时存在与卷相关的问题

https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/2280

【讨论】:

【参考方案5】:

使用以下 docker-compose 文件:

web:
  image: 'gitlab/gitlab-ce:13.7.1-ce'
  restart: always
  hostname: 'localhost'
  environment:
    GITLAB_OMNIBUS_CONFIG: |
#KO      gitlab_rails['initial_root_password'] = 'adminadmin'
      gitlab_rails['gitlab_shell_ssh_port'] = 2222
      external_url 'http://localhost'
  ports:
    - '8185:80'
    - '1443:443'
    - '2222:22'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
#important here: do not mount /var/opt/gitlab but /var/opt as stated here: 
# https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/2280
    - '/srv/gitlab/data:/var/opt'

执行 (cygwin) docker ps | grep gitlab 直到显示状态(健康),然后在 http://localhost:8185 打开浏览器

如果您第一次没有被要求更改root密码, 像这样设置它(cygwin):

docker exec -it $(docker ps | grep gitlab | awk 'print $1') bash

root@dev:/# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
 GitLab:       13.12.5 (f37a805b0b4) FOSS
 GitLab Shell: 13.18.0
 PostgreSQL:   12.6
--------------------------------------------------------------------------------
Loading production environment (Rails 6.0.3.6)
irb(main):001:0> user = User.where(id: 1).first                                                                                                                                         => #<User id:1 @root>
irb(main):002:0> user.password = 'adminadmin'                                                                                                                                           => "adminadmin"
irb(main):003:0> user.password_confirmation = 'adminadmin'                                                                                                                              => "adminadmin"
irb(main):004:0> user.save                                                                                                                                                              Enqueued ActionMailer::MailDeliveryJob (Job ID: d5dce701-2a79-4bed-b0a4-2abb877c2081) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", :args=>[#<GlobalID:0x00007f621582b210 @uri=#<URI::GID gid://gitlab/User/1>>]
=> true
irb(main):005:0> exit     

然后登录,创建一个用户,给他第一个密码,用它登录更新密码,创建一个项目,并使用项目的 git url 而不是 http,因为使用端口似乎会对 http url 产生一些问题。可能需要生成公共私钥/密钥并在 gitlab 中注册公众

【讨论】:

以上是关于使用 Docker 在 Windows 上安装 gitlab的主要内容,如果未能解决你的问题,请参考以下文章

G++-7windows10下Ubuntu子系统(WSL)安装g++及初步使用,docker使用g++

使用 Docker 在 Windows 上安装 gitlab

如何在 Windows 上安装 docker 套接字?

windows docker测试

win10安装docker,空间不够怎么办?

在 Windows 上安装 Docker 后无法启动我的虚拟 Box 机