欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Docker?Compose部署Nginx的詳細(xì)教程

 更新時間:2025年03月26日 08:55:10   作者:Kwan的解憂雜貨鋪  
在現(xiàn)代應(yīng)用部署中,容器編排工具已成為不可或缺的一部分,Docker?Compose?作為?Docker?官方的單機編排工具,通過聲明式的?YAML?文件簡化了多容器應(yīng)用的管理,下面我們就來看看如何使用Docker?Compose部署Nginx吧

在現(xiàn)代應(yīng)用部署中,容器編排工具已成為不可或缺的一部分。Docker Compose 作為 Docker 官方的單機編排工具,通過聲明式的 YAML 文件簡化了多容器應(yīng)用的管理。

一、Docker Compose 核心優(yōu)勢

1.1 與傳統(tǒng) Docker run 的對比

Docker Compose 相比直接使用docker run命令具有顯著優(yōu)勢:

聲明式配置:所有服務(wù)參數(shù)集中定義在 docker-compose.yml 文件中

依賴管理:自動處理服務(wù)啟動順序和網(wǎng)絡(luò)連接

環(huán)境隔離:支持為不同環(huán)境(開發(fā)/測試/生產(chǎn))定義獨立配置

一鍵操作:簡化多容器應(yīng)用的啟動、停止和重建流程

1.2 典型應(yīng)用場景

開發(fā)環(huán)境快速搭建

微服務(wù)架構(gòu)本地測試

CI/CD 流水線中的集成測試

中小規(guī)模生產(chǎn)部署

二、環(huán)境準(zhǔn)備與安裝

2.1 Docker Compose 安裝

在 Linux 系統(tǒng)上安裝最新版本:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

驗證安裝:

docker-compose --version
# 輸出應(yīng)類似:Docker Compose version v2.20.3

2.2 項目目錄結(jié)構(gòu)

推薦的標(biāo)準(zhǔn)目錄布局:

nginx-project/
├── docker-compose.yml
├── config/
│   ├── nginx.conf
│   └── conf.d/
│       └── app.conf
├── html/
│   └── index.html
└── logs/
    ├── access.log
    └── error.log

三、基礎(chǔ)部署實戰(zhàn)

3.1 最小化 docker-compose.yml

version: "3.8"

services:
  web:
    image: nginx:1.23-alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    restart: unless-stopped

啟動服務(wù):

docker-compose up -d

3.2 完整功能配置示例

version: "3.8"

services:
  nginx:
    image: nginx:1.23-alpine
    container_name: production_nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./config/conf.d:/etc/nginx/conf.d
      - ./html:/usr/share/nginx/html
      - ./logs:/var/log/nginx
      - ./certs:/etc/ssl/certs
    environment:
      - TZ=Asia/Shanghai
      - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
    networks:
      - frontend
    deploy:
      resources:
        limits:
          cpus: "1.5"
          memory: 512M
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost"]
      interval: 30s
      timeout: 3s
      retries: 3

???????networks:
  frontend:
    driver: bridge
    attachable: true

四、高級配置技巧

4.1 多環(huán)境配置管理

使用 extends 和多個 compose 文件實現(xiàn)環(huán)境差異化:

base-compose.yml:

services:
  nginx:
    image: nginx:${NGINX_VERSION:-1.23-alpine}
    volumes:
      - ${CONFIG_PATH:-./config}:/etc/nginx

docker-compose.prod.yml:

version: "3.8"
services:
  nginx:
    extends:
      file: base-compose.yml
      service: nginx
    environment:
      - NGINX_ENV=production
    deploy:
      replicas: 3

啟動生產(chǎn)環(huán)境:

docker-compose -f base-compose.yml -f docker-compose.prod.yml up -d

4.2 負(fù)載均衡配置

部署 Nginx+PHP-FPM 集群示例:

services:
  nginx:
    image: nginx:1.23-alpine
    depends_on:
      - php
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf

  php:
    image: php:8.2-fpm
    deploy:
      replicas: 3
    volumes:
      - ./php:/var/www/html 
redis:
    image: redis:7-alpine

4.3 動態(tài)配置生成

結(jié)合 envsubst 實現(xiàn)模板化配置:

services:
  nginx:
    environment:
      - BACKEND_SERVER=app:8080
    volumes:
      - ./templates/upstream.conf.template:/etc/nginx/templates/upstream.conf.template

模板文件示例:

upstream backend {
    server ${BACKEND_SERVER};
}

五、安全加固方案

5.1 非 root 用戶運行

services:
  nginx:
    user: "1000:1000"
    cap_drop:
      - ALL
    cap_add:
      - NET_BIND_SERVICE

5.2 網(wǎng)絡(luò)安全隔離

networks:
  frontend:
    internal: false
  backend:
    internal: true

services:
  nginx:
    networks:
      - frontend
      - backend

  database:
    networks:
      - backend

5.3 鏡像簽名驗證

services:
  nginx:
    image: nginx@sha256:abc123...
    platform: linux/amd64

六、生產(chǎn)環(huán)境最佳實踐

6.1 日志管理方案

services:
  nginx:
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
        compress: "true"

6.2 監(jiān)控集成

Prometheus 監(jiān)控配置示例:

services:
  nginx:
    labels:
      - "prometheus.scrape=true"
      - "prometheus.port=9113"
    volumes:
      - ./nginx-prometheus.conf:/etc/nginx/conf.d/prometheus.conf

  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"

6.3 藍綠部署實現(xiàn)

services:
  nginx:
    deploy:
      update_config:
        parallelism: 2
        delay: 10s
        order: start-first
    healthcheck:
      test: ["CMD-SHELL", "curl -sf http://localhost/health || exit 1"]

七、故障排查與維護

7.1 常用診斷命令

查看服務(wù)狀態(tài):

docker-compose ps
docker-compose top

實時日志監(jiān)控:

docker-compose logs -f --tail=100

進入容器調(diào)試:

docker-compose exec nginx sh

7.2 配置驗證流程

# 檢查語法
docker-compose config

# 試運行
docker-compose up --dry-run

# 重建服務(wù)
docker-compose up -d --force-recreate

7.3 版本升級策略

備份現(xiàn)有配置和數(shù)據(jù)

修改 compose 文件中的鏡像版本

分階段滾動更新:

docker-compose pull
docker-compose up -d --no-deps nginx

八、性能優(yōu)化建議

8.1 資源限制配置

services:
  nginx:
    deploy:
      resources:
        limits:
          cpus: "2"
          memory: 1G
        reservations:
          memory: 512M

8.2 靜態(tài)資源緩存

優(yōu)化后的 Nginx 配置:

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires 1y;
    add_header Cache-Control "public";
    access_log off;
}

8.3 連接參數(shù)調(diào)優(yōu)

environment:
  - NGINX_WORKER_PROCESSES=auto
  - NGINX_WORKER_CONNECTIONS=4096
  - NGINX_KEEPALIVE_TIMEOUT=65

到此這篇關(guān)于使用Docker Compose部署Nginx的詳細(xì)教程的文章就介紹到這了,更多相關(guān)Docker Compose部署Nginx內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker如何查詢指定名字的容器id

    docker如何查詢指定名字的容器id

    要查詢指定名字的Docker容器ID,可以使用命令 docker ps -a --filter "name=CONTAINER_NAME" -q,該命令將返回指定名稱的容器ID,如果存在多個相同名稱的容器,則返回所有這些容器的ID
    2025-03-03
  • Docker打包自定義鏡像的實現(xiàn)

    Docker打包自定義鏡像的實現(xiàn)

    本文主要介紹了在Docker中打包自定義鏡像,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Docker 1分鐘搭建DNS服務(wù)器的方法

    Docker 1分鐘搭建DNS服務(wù)器的方法

    本篇文章介紹了Docker 1分鐘搭建DNS服務(wù)器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Docker連接宿主Redis的方法步驟

    Docker連接宿主Redis的方法步驟

    本文主要介紹了Docker連接宿主Redis的方法步驟,可以輕松地使用Docker容器與宿主機上的Redis進行交互,實現(xiàn)高效的數(shù)據(jù)存儲和共享,,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Docker 安裝及配置鏡像加速的實現(xiàn)

    Docker 安裝及配置鏡像加速的實現(xiàn)

    這篇文章主要介紹了Docker 安裝及配置鏡像加速的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • CentOS7  docker服務(wù)無法啟動解決方案及實現(xiàn)步驟

    CentOS7 docker服務(wù)無法啟動解決方案及實現(xiàn)步驟

    這篇文章主要介紹了CentOS7 docker服務(wù)無法啟動解決方案及實現(xiàn)步驟的相關(guān)資料,這里對Docker 服務(wù)無法啟動做了詳細(xì)的排查工作及流程,并附解決辦法,需要的朋友可以參考下
    2016-12-12
  • docker各目錄含義詳細(xì)解析

    docker各目錄含義詳細(xì)解析

    Docker容器的目錄結(jié)構(gòu)通常是在構(gòu)建鏡像時定義的,它基于所使用的基礎(chǔ)鏡像,下面這篇文章主要給大家介紹了關(guān)于docker各目錄含義詳細(xì)解析的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Linux系統(tǒng)docker部署.net?core3.1的詳細(xì)步驟

    Linux系統(tǒng)docker部署.net?core3.1的詳細(xì)步驟

    這篇文章主要介紹了Linux系統(tǒng)docker部署.net?core3.1,文章演示基本的基于docker部署.netcore服務(wù),linux系統(tǒng)騰訊云ubuntu,.net?core版本3.1,需要的朋友可以參考下
    2022-09-09
  • k8s 與docker空間使用分析與清理方法

    k8s 與docker空間使用分析與清理方法

    使用Docker 運行業(yè)務(wù)一段時間后,可能會出現(xiàn)宿主節(jié)點的磁盤容量占用高,導(dǎo)致宿主機磁盤空間不足等異常,對業(yè)務(wù)造成影響,本文對 Docker 的空間占用進行匯總分析,需要的朋友可以參考下
    2022-12-12
  • 如何使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù)

    如何使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù)

    這篇文章主要介紹了使用Docker恢復(fù)Mysql8備份的Data數(shù)據(jù),下面小編給大家講解下操作方法,對Docker恢復(fù)Mysql數(shù)據(jù)備份相關(guān)知識感興趣的朋友跟隨小編一起看看吧
    2022-11-11

最新評論