您是否曾经想过托管自己的GitLab存储库以确保您的代码永远不会落入坏人之手?尽管将您的存储库托管在第三方云主机上有很多优势(例如可用性和可靠性),但重要的是要完全控制您的存储库,这样任何人都可以在未经您批准的情况下访问它。在Docker的帮助下,您可以做到这一点。我会告诉你它是如何完成的。它并不过分复杂,但需要很多步骤。所以,事不宜迟,让我们开始工作吧。要完成此任务,您需要一个正在运行的UbuntuServer实例和一个具有sudo权限的用户。Ubuntu实例可以托管在您的服务器上,甚至可以托管在您的云托管帐户中(尽管通过第三方托管它会破坏自托管存储库的目的)。安装依赖项我们需要做的第一件事是安装所需的依赖项。登录到您的Ubuntu实例并使用以下命令安装所需的软件:sudoaptinstallca-certificatescurlopenssh-serverapt-transport-httpsgnupglsb-release-y接下来,我们需要安装DockerCommunityEdition。为此,我们将添加官方DockerGPG密钥:curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/usr/share/keyrings/docker-archive-keyring.gpg接下来,添加Docker存储库:echo"deb[arch=amd64signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]https://download.docker.com/linux/ubuntu$(lsb_release-cs)稳定”|sudotee/etc/apt/sources.list.d/docker.list>/dev/null使用以下命令更新apt:sudoapt-getupdate最后,安装DockerCommunityEdition:sudoapt-getupdategetinstalldocker-cedocker-ce-clicontainerd.iodocker-compose-y使用以下命令将您的用户添加到docker组:sudousermod-aGdocker$USER注销并重新登录以使更改生效。到目前为止,一切都很好。让我们继续。更改默认SSH端口因为GitLab使用默认SSH端口,所以您必须更改默认SSH服务器端口。否则会发生冲突。使用以下命令打开SSH配置文件:sudovi/etc/ssh/sshd_config在此文件中,查找以下行:#prot22将行更改为:prot2222启用端口22通过防火墙:sudoufwallow2022确保使用以下命令测试与另一个登录名的SSH连接:sshUSER@SERVER-p2022其中USER是您的远程用户名,SERVER是托管服务器的IP地址或域。创建一个新的Docker卷我们现在准备好进入Docker方面了。我们需要做的第一件事是创建一个目录。首先,创建一个目录来保存文件:sudomkdir-p/srv/gitlab接下来,创建一个目录来保存我们的Dockercompose文件:mkdir~/docker-gitlab使用以下命令切换到该目录:cd~/docker-gitlab创建一个文件来保存环境变量:vi.env将以下内容粘贴到这个新文件中:GITLAB_HOME=/srv/gitlab保存并关闭文件。创建一个Docker组合文件创建一个新文件:vicompose.yml在该文件中,粘贴以下内容(确保更改任何粗体内容以适合您的环境/需要):version:'3.6'services:web:image:'gitlab/gitlab-ee:latest'container_name:'gitlab-server'restart:alwayshostname:'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG:|external_url'https://DOMAIN_OR_IP>'gitlab_rails['smtp_enable']=truegitlab_rails['smtp_address']="SMTP_SERVER"gitlab_rails['smtp_user_name']="SMTP_SERVER_USERNAME"gitlab_rails['smtp_password']="SMTP_SERVER_PASSWORD"gitlab_rails['smtp_domain']="DOMAIN"gitlab_rails['smtp_enable_starttls_auto']=truegitlab_rails['smtp_port']=587gitlab_rails['smtp_authentication']="登录"gitlab_rails['gitlab_email_from']='FROM_EMAIL'gitlab_rails['gitlab_email_reply_to']='REPLY_EMAIL'#在此处添加任何其他gitlab.rb配置,每个都在其自己的线路端口上:-'80:80'-'443:443'-'22:22'-'587:587'volumes:-'$GITLAB_HOME/config:/etc/gitlab'-'$GITLAB_HOME/logs:/var/log/gitlab'-'$GITLAB_HOME/data:/var/opt/gitlab'shm_size:'256m'save并关闭文件部署容器我们现在准备好部署容器了。为此,请发出以下命令:docker-composeup-d容器的部署将需要一些时间(10到30分钟之间的任何时间,具体取决于您的互联网连接速度),同时可以处理其他一些任务的那一刻。部署后,您需要使用以下命令访问自动生成的root密码:sudocat/srv/gitlab/config/initial_root_password您应该会看到一长串随机字符,将用作登录的root密码。要访问GitLab打开Web浏览器并将其指向http://SERVER(其中SERVER是服务器的IP地址或域名)。GitLab登录页面(参见图1),您将在其中键入用户名root并粘贴您在_intial_root_password_文件中找到的密码,如上所示。如果站点没有立即出现,请给它一些时间让容器完成部署。图1:GitLab登录屏幕意味着成功!另一种部署方法如果您发现上述部署有问题,这里有另一种方法。使用以下命令设置卷位置:exportGITLAB_HOME=/srv/gitlab使用此命令部署容器(确保更改任何粗体内容以满足您的需要):dockerrun--detach\--hostnameHOSTNAME\--publish443:443--publish80:80--publish22:22\--namegitlab\--restartalways\--volume$GITLAB_HOME/config:/etc/gitlab\--volume$GITLAB_HOME/logs:/var/log/gitlab\--volume$GITLAB_HOME/data:/var/opt/gitlab\--shm-size256m\gitlab/gitlab-ee:latest以上方法之一应该部署GitLab。如果仍有问题,您可以将传出的SSH端口更改为10022这样的选项,这样选项将类似于_--publish10022:22。_最后,如果您在部署GitLab时仍然遇到问题,这里是另一个选项:dockerrun-d-p22:22-p80:80-p443:443\--namegitlab--hostnamegitlab.example。com\--restartunless-stopped--shm-size256m\-vgitlab_config:/etc/gitlab-vgitlab_logs:/var/log/gitlab\-vgitlab_data:/var/opt/gitlabgitlab/gitlab-ce:14.7.0-ce.0现在有一个可以在公司内部使用的GitLab仓库。
