Docker Compose例項之nginx反向代理GitLab
在上一篇文章(Docker快速搭建GitLab私有倉庫)中探索瞭如何用docker實現最簡單的GitLab服務。但是現實場景中往往會遇到複雜的情況和需求,光用docker指令可能就比較繁瑣了。
舉個例子? 如下圖所示,在一個伺服器上要部署一個GitLab,N個其它服務(那N個服務或許還要與GitLab進行隔離),如果用docker 指令一個一個的run起來,管理起來可就麻煩了。
當然docker作為流行工具,不會讓我們那麼累,我們藉助Docker Compose的檔案來描述這個多容器的配置,並通過一條命令就能啟動這些容器。
Docker Compose 的配置檔案 docker-compose.yml 如下:
version: '3.6'
services:
gitlab: # gitlab服務名
container_name: gitlab-site # gitlab 容器名
image: gitlab/gitlab-ce:latest
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gitlab.example.com' # git域名
unicorn['worker_timeout'] = 60
unicorn['worker_processes'] = 2
nginx['enable'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/ssl/gitlab.example.com.crt" # 加密證書檔案
nginx['ssl_certificate_key'] = "/etc/ssl/gitlab.example.com.key"
nginx['ssl_ciphers'] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"
nginx['ssl_prefer_server_ciphers'] = "on"
nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2"
nginx['ssl_session_cache'] = "builtin:1000 shared:SSL:10m"
nginx['listen_addresses'] = ["0.0.0.0"]
nginx['http2_enabled'] = true
volumes:
- "/srv/gitlab/config:/etc/gitlab" # 此處使用的是絕對路徑
- "/srv/gitlab/logs:/var/log/gitlab"
- "/srv/gitlab/data:/var/opt/gitlab"
- "/srv/ssl:/etc/ssl" # 加密證書檔案路徑對映
networks:
- git-network # 使用 git-network 網路,與 other-network 相隔離
other-app: # 用 nginx 模擬的其它服務
container_name: other-app-nginx
image: nginx:stable-alpine
volumes:
- "./nginx-conf-site:/etc/nginx/conf.d:ro" # 此處使用的是相對路徑
- "./contents:/usr/share/nginx/html/sites:ro" # 相對的是 docker-compose.yml 的位置
networks:
- other-network # 使用 other-network 網路,與 git-network 相隔離
nginx-reverse: # nginx 反向代理服務
container_name: nginx-reverse
depends_on: # 反向代理依賴的服務名
- gitlab
- other-app
image: nginx:stable-alpine
ports:
- "443:443"
- "80:80"
volumes:
- "./nginx-conf-reverse:/etc/nginx/conf.d:ro" # 此處使用的是相對路徑
- "/srv/ssl:/etc/ssl:ro" # 此處使用的是絕對爐具
networks: # nginx反向代理使用的網路
- git-network # gitlab使用的網路
- other-network # 其它app使用的網路
networks: # 宣告網路
git-network:
other-network:
nginx反向代理的配置檔案1: git-reverse.conf ,放在與docker-compose.yml 所在目錄相對的 nginx-conf-reverse 目錄下,作用是將對 https://gitlab.example.com 的訪問進行轉發
server{
listen 443 ssl http2; # 監聽 443 埠
listen [::]:443 ssl http2;
server_name gitlab.example.com;
ssl_certificate /etc/ssl/gitlab.example.com.crt;
ssl_certificate_key /etc/ssl/gitlab.example.com.key;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
location / {
proxy_pass https://gitlab-site; # 轉發給名為 "gitlab-site" 的 容器
}
}
nginx反向代理的配置檔案2: other-reverse.conf ,放在與docker-compose.yml 所在目錄相對的 nginx-conf-reverse 目錄下, 作用是將對 http://other.example.com 的訪問進行轉發
server{
listen 80; # 監聽 80 埠
server_name other.example.com; # 其它服務的域名
location / {
proxy_pass http://other-app-nginx; # 轉發到"其它"服務
}
}
本例中的“其它服務”由一個nginx靜態網站模擬,其配置檔案other-site.conf放在與docker-compose.yml 所在目錄相對的 nginx-conf-site 目錄下:
server {
listen 80;
server_name other.example.com;
location / {
root /usr/share/nginx/html/sites/other-site;
index index.html;
}
}
當然,上述配置中用 nginx 模擬的“其它服務” 可以是任意的網路服務,你不需要的話,把這部分刪掉也沒問題。
最後,執行一個指令
sudo docker-compose up -d
GitLab服務、其它服務、Nginx反向代理 就會依次啟動起來。
《Docker經典例項》這本書涉及了與Docker很多方方面面的例子,上面的 GitLab 的例子我也是參照此書裡的例子進行學習和實踐的,下一步準備好好學習一下里面的Kubernetes。
相關文章
- 通過docker-compose搭建 Nginx 反向代理伺服器DockerNginx伺服器
- Nginx proxy manager反向代理docker hubNginxDocker
- docker 安裝 nginx 並配置反向代理DockerNginx
- 淺談Nginx之反向代理Nginx
- 為Docker建立自動化nginx反向代理DockerNginx
- 利用nginx反向代理加速docker映象拉取NginxDocker
- Nginx反向代理Nginx
- nginx 反向代理Nginx
- nginx 學習之反向代理(1)Nginx
- nginx大道至簡之反向代理Nginx
- docker-compose 使用例項Docker
- nginx正向代理、反向代理Nginx
- Nginx專題(1):Nginx之反向代理及配置Nginx
- docker下nginx反向代理和負載均衡配置DockerNginx負載
- 使用nginx反向代理docker中的git和redmineNginxDockerGit
- Nginx 配置:反向代理Nginx
- Nginx 配置反向代理Nginx
- [Nginx] TCP 反向代理NginxTCP
- Nginx 反向代理 websocketNginxWeb
- Docker Compose部署GitLabDockerGitlab
- Nginx之路--配置正向代理、反向代理Nginx
- Nginx正向代理和反向代理配置Nginx
- nginx 反向代理 swoole 使用Nginx
- nginx 反向代理設定Nginx
- Nginx四層反向代理Nginx
- Docker安裝Redmine並使用Nginx反向代理為httpsDockerNginxHTTP
- gitlab-ce使用nginx做反向代理的方式啟用httpsGitlabNginxHTTP
- PgSql on Docker with HaProxy 反向代理SQLDocker
- Docker容器配置Nginx例項分享DockerNginx
- Nginx之location中反向代理proxy_pass配置Nginx
- 楊老師課堂之Nginx學習之反向代理Nginx
- nginx通過https方式反向代理多例項tomcatNginxHTTPTomcat
- nginx 反向代理 介面請求Nginx
- nginx反向代理配置去除字首Nginx
- tomcat 配置nginx 反向代理TomcatNginx
- nginx反向代理快取教程。Nginx快取
- Nginx實戰(五) 反向代理Nginx
- Nginx、haproxy反向代理設定Nginx