docker 在同一台设备上自托管GitLab和Nextcloud:协议栈4 0.0.0.0:443:绑定:地址已在使用中

6ovsh4lw  于 2023-03-01  发布在  Docker
关注(0)|答案(1)|浏览(141)

背景

在通过https安装Nextcloud的自托管示例(可在以下位置访问:https://localhost:81(和tor)),我在运行自托管GitLab示例时遇到一些问题。

local output
    output=$(sudo docker run --detach \
      --hostname "$GITLAB_SERVER" \
      --publish "$GITLAB_PORT_1" --publish "$GITLAB_PORT_2" --publish "$GITLAB_PORT_3" \
      --name "$GITLAB_NAME" \
      --restart always \
      --volume "$GITLAB_HOME"/config:/etc/gitlab \
      --volume "$GITLAB_HOME"/logs:/var/log/gitlab \
      --volume "$GITLAB_HOME"/data:/var/opt/gitlab \
      -e GITLAB_ROOT_EMAIL="$GITLAB_ROOT_EMAIL_GLOBAL" -e GITLAB_ROOT_PASSWORD="$gitlab_pwd" -e EXTERNAL_URL="http://127.0.0.1" \
      "$gitlab_package")

与:

GITLAB_SERVER="127.0.0.1"
GITLAB_SERVER_HTTP_URL="http://$GITLAB_SERVER"
GITLAB_PORT_1="443:443"
GITLAB_PORT_2="80:80"
GITLAB_PORT_3="23:22"

我收到输出:

docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (426dd7fa772f5250531ca478760080f981287048023b356bfa0e98f16db347f9): Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use

我知道这意味着一些进程已经在端口443上运行了,我写了一个方法来杀死在这些端口上运行的所有进程,但是,httpd进程不断地重生。因为我是在Ubuntu 22.04的新安装上这样做的,所以我假设这是Nextcloud进程不断地重生。所以我可以杀死并删除Nextcloud,但是这违背了目的。

问题

因此,我想问一下,如何通过HTTPS在同一台设备上同时托管Nextcloud和GitLab?

注解

我知道在写这篇文章的时候GitLab服务器仍然显示http而不是https,我还没有切换到https,因为我首先遇到了这个错误。
我假设两者都需要在端口443上/通过端口443访问,因为它们都可以通过https使用自签名SLL证书访问。

wljmcqd8

wljmcqd81#

为此,您可以用途:

nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/*.conf;"

gitlab.rb中的部分并放置nexcloud配置/etc/nginx/conf.d/nexcloud.conf这将帮助您在同一个443端口上进行所有配置。
然后您可以检查配置

gitlab-ctl restart nginx
 gitlab-ctl status nginx

相关问题