docker - 端口绑定两个gitlab容器的最佳实践
问题描述
我们希望在我们的服务器上运行两个 gitlab 实例。一个将出于遗留原因维护,一个新的将用于新项目。
使用 docker,我们能够调出 gitlab 的第一个遗留实例。这是我们的 docker-compose.yml 减去我们的环境变量和主机名。
version: '3.7'
services:
gitlab:
container_name: 'gitlab_legacy'
image: 'gitlab/gitlab-ce:latest'
restart: 'always'
ports:
- '80:80'
- '443:443'
- '22:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
networks:
default:
external:
name: nginx-proxy
我的网络知识有限,但我知道这显然不适用于第二个实例,因为端口已经在使用中。会出现以下错误。
Bind for 0.0.0.0:80 failed: port is already allocated
Bind for 0.0.0.0:443 failed: port is already allocated
Bind for 0.0.0.0:22 failed: port is already allocated
所以我的问题是,启动第二个 gitlab dockerised 容器或任何未来需要绑定到相同端口的容器的最佳解决方案是什么?
解决方案
您应该使用 nginx rever 代理,如此链接中所述
然后在您的 docker-compose 文件中,端口部分将按照描述进行更改。例如 :
ports:
- '7080:80'
- '7443:443'
- '7022:22'
对于第二种情况:
ports:
- '8080:80'
- '8443:443'
- '8022:22'
推荐阅读
- angular - Angular 9:无法创建新项目
- ansible - Ansible include_tasks 给出语法错误
- java - 捕捉到InterruptedException后我们真的应该中断当前线程吗?
- php - 显示数据透视表数据
- weka - Weka 中树叶的数量和树的大小是什么意思?
- php - 为什么我的语句总是返回错误的 mysql num-rows?
- arrays - 嵌套列表最后一行元素重复所有前面的行
- ajax - 这个 Spring-Ajax 示例有什么问题
- java - Android 画布区域不是全屏的。如何设置画布区域?
- python - 在 Python 应用程序中准备 JSON 以供 React 使用