02.DockerCompose部署Nginx

目录

  • 参考链接
  • 获取镜像
  • 单机部署(bridge模式)
  • 单机部署(host模式)
  • 单机部署使用 templates 配置 nginx.conf
    • 官方镜像支持的环境变量
    • 准备template文件
    • 创建 docker-compose.yml
    • 验证

转载请注明出处

参考链接

  • https://hubgw.docker.com/_/nginx
  • https://devopsian.net/p/nginx-config-template-with-environment-vars/

获取镜像

docker pull nginx:1.26.0

单机部署(bridge模式)

采用外挂nginx配置方式
创建 nginx.yml 文件, 内容如下

version: "3"

services:
  nginx:
    container_name: nginx
    image: nginx:1.26.0
    restart: on-failure:3
    ports:
      - 10001:80
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - /nginx-work/nginx.conf:/etc/nginx/nginx.conf
      - /nginx-work/logs:/var/log/nginx
    # network_mode: host
# 部署
docker compose -f nginx.yml up -d
# 卸载
docker compose -f nginx.yml down

单机部署(host模式)

采用外挂nginx配置方式
创建 nginx.yml 文件, 内容如下

version: "3"

services:
  nginx:
    container_name: nginx
    image: nginx:1.26.0
    restart: on-failure:3
    environment:
      - TZ=Asia/Shanghai
      # - NGINX_HOST=foobar.com
    volumes:
      - /nginx-work/nginx.conf:/etc/nginx/nginx.conf
      - /nginx-work/logs:/var/log/nginx
    network_mode: host
# 部署
docker compose -f nginx.yml up -d
# 卸载
docker compose -f nginx.yml down

单机部署使用 templates 配置 nginx.conf

nginx 在 1.19 之后的版本可以支持使用template来进行配置, 并支持在template中使用环境变量

官方镜像支持的环境变量

  • NGINX_ENVSUBST_TEMPLATE_DIR
    • 包含模板文件的目录(默认值:/etc/nginx/templates)
    • 当此目录不存在时,此函数将不执行任何有关模板处理的操作。
  • NGINX_ENVSUBST_TEMPLATE_SUFFIX
    • 模板文件的后缀(默认值:.template)
    • 此函数仅处理名称以此后缀结尾的文件。
  • NGINX_ENVSUBST_OUTPUT_DIR
    • 输出执行 envsubst 结果的目录(默认:/etc/nginx/conf.d)
    • 输出文件名是删除了后缀的模板文件名。
      • 例如。 将输出文件名 。/etc/nginx/templates/default.conf.template/etc/nginx/conf.d/default.conf
    • 此目录必须可由运行容器的用户写入。

准备template文件

默认情况下,容器会加载/etc/nginx/templates/*.template文件,并将设置了环境变量的结果输出到/etc/nginx/conf.d目录下(可以通过环境变量修改)。
准备好一个名为 nginx.conf.template 的文件(和docker-compose 文件同级目录),并将其配置如下 PORT 为后面要传入的环境变量。

server {
  server_name         localhost;
  listen              ${PORT};
}

创建 docker-compose.yml

version: "3"

services:
  nginx:
    container_name: nginx
    image: nginx:1.26.0
    restart: on-failure:3
    environment:
      - NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
      - TZ=Asia/Shanghai
      - PORT=8088
    volumes:
      # 挂载template文件目录
      - ./nginx.conf.template:/etc/nginx/templates/nginx.conf.template
      # 容器内文件映射到本地(重新安装nginx会还原)
      - ./config/nginx-inside-container.conf:/etc/nginx/nginx.conf:rw
    network_mode: host
docker compose up -d 

验证

在容器的 /etc/nginx/conf.d文件夹中可以确认到输出了设置了环境变量的文件。

docker exec -it nginx cat /etc/nginx/nginx.conf

02.DockerCompose部署Nginx_第1张图片

你可能感兴趣的:(DockerCompose,Nginx,nginx,docker,docker,compose)