环境介绍

  • gitlab-ce:lasted(13.3.x)
  • Windows Server 实体机
  • Linux 虚拟机(10.30.21.22)

    部署情况

    部署时使用的 docker-compose.yml 文件如下: ```yaml version: ‘3.4’

services: gitlab: image: ‘gitlab/gitlab-ce:lasted’ container_name: gitlab ports: # 宿主机与容器端口映射配置

  1. - '10443:443'
  2. - '10022:22' # ssh clone port
  3. - '81:80' # 网页端地址。注意,此处映射是需要调整的,下文中会有描述。
  4. volumes:
  5. - data:/var/data/gitlab
  6. - etc:/etc/gitlab
  7. - log:/var/log/gitlab
  8. environment:
  9. TZ: 'Asia/Shanghai'
  10. GITLAB_OMNIBUS_CONFIG: |
  11. gitlab_rails['gitlab_shell_ssh_port'] = 10022
  12. gitlab_rails['time_zone'] = 'Asia/Shanghai'
  1. 完成部署后,即可通过 10.30.21.22:81 访问站点:<br />![图片.png](https://cdn.nlark.com/yuque/0/2020/png/1315226/1604364208779-a1bef7a1-937b-47dd-9dba-1474bfc4abb3.png#align=left&display=inline&height=430&margin=%5Bobject%20Object%5D&name=%E5%9B%BE%E7%89%87.png&originHeight=430&originWidth=1050&size=20100&status=done&style=shadow&width=1050)
  2. 但是在仓库主页上进行克隆操作时,所得到的地址却是 http://asd7wgd7a/xxxx.git,也就是 http://**虚拟机主机名**/仓库名.git。实际上这里并没有标识出端口号(81),因此是无法通过这个地址来执行 `git clone` 操作的。
  3. <a name="UTHTo"></a>
  4. ## 解决问题
  5. 这时,需要对 gitlab.rb 配置文件进行调整。以上文中 docker-compose.yml 的配置为例,gitlab.rb 文件在同目录下 etc 文件中(./etc/gitlab.rb)。
  6. ```ruby
  7. ##! Note: During installation/upgrades, the value of the environment variable
  8. ##! EXTERNAL_URL will be used to populate/replace this value.
  9. ##! On AWS EC2 instances, we also attempt to fetch the public hostname/IP
  10. ##! address from AWS. For more details, see:
  11. ##! https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
  12. external_url 'http://10.30.21.22:81'

在该配置文件中,将 externalurl 项的配置调整为上述值,即对外映射的地址 http://10.30.21.22:81。
此时,还需要修改 docker-compose.yml 文件,否则应用配置后将无法访问 http://10.30.21.22:81
_站点。因为在配置 gitlab.rb 文件中的 external_url 后,会同步改变 gitlab-ce 容器中的站点代理 nginx 配置,站点将变为 81 端口,而不再是默认的 80 端口,所以需要映射到宿主机的端口也需要相应调整。

  1. # 隐藏修改部分...
  2. ports:
  3. - '10443:443'
  4. - '10022:22'
  5. - '81:81' # 81:80 -> 81:81

之后通过 docker-compose up 来重启容器,即可在仓库页面的克隆中看到正确的地址。图片.png