Nginx docker-compose 部署案例

编程教程 > Docker Case (83) 2025-01-23 21:23:22

docker-compse.yml配置

version: "3.8"
networks:
 vRouter:
   external: true
services:
 web: 
   image: nginx:1.19.10
   container_name: nginx
   restart: always
   volumes: 
     - ./nginx.conf:/etc/nginx/nginx.conf
     - ./conf.d:/etc/nginx/conf.d
     - ./html/:/usr/share/nginx/html
     - ./log:/var/log/nginx
     - /opt/docker/acme.sh/out:/etc/nginx/conf.d/ssl
   ports: 
     - 80:80
     - 443:443
   networks:
     vRouter:
       aliases:
         - nginx.server
   deploy:
     resources:
       limits:
         memory: 256M

注意:

  • 网络为外部网络vRouter
  • 根据需要配置ssl部分挂载/opt/docker/acme.sh/out:/etc/nginx/conf.d/ssl

部署目录结构

tree -a ./
./
├── conf.d  						#nginx 自定义配置映射目录
│   ├── default.conf					#存放一些通用配置
│   ├── ssl								#存放ssl证书目录(可选)
│   └── xx.com.conf						#自定义配置
├── docker-compose.yml 				#docker-compose配置文件
├── html							#html部署目录(可选)
├── log								#nginx日志映射出来的目录	(启动容器后自动创建)
│   ├── access.log						#nginx 访问日志		(启动容器后自动创建)
│   └── error.log						#nginx 错误日志		(启动容器后自动创建)
├── nginx.conf						#nginx.conf配置,通过映射进去方便更改某些配置
└── nginx.conf.default				#nginx.conf.default 配置模板默认

注意:nginx.conf 不允许放在conf.d目录,否则启动报错

nginx.conf 默认模板

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
   worker_connections  1024;
}

http {
   include       /etc/nginx/mime.types;
   default_type  application/octet-stream;
   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';
   access_log  /var/log/nginx/access.log  main;
   sendfile        on;
   #tcp_nopush     on;
   keepalive_timeout  65;
   #gzip  on;
   include /etc/nginx/conf.d/*.conf;
}

 

默认配置default.conf

client_max_body_size     50m; #文件大小限制,默认1m
server {
   listen       80;
   server_name  localhost;
   return 403;
}
server {
   listen       443 ssl;
   server_name  localhost;
   ssl_certificate conf.d/ssl/*.xx.com_ecc/fullchain.cer;
   ssl_certificate_key conf.d/ssl/*.xx.com_ecc/*.xx.com.key;
   return 403;
}

说明:

  1. 配置全局最大上传大小50M(可根据情况修改)
  2. 配置在没有正确域名映射关系时候访问80/443端口返回403

 

项目配置xx.com.conf

参考代理后端项目配置

server {
   listen       443 ssl;
   server_name  www.xx.com;
   #ssl 
   ssl_certificate conf.d/ssl/*.xx.com_ecc/fullchain.cer;
   ssl_certificate_key conf.d/ssl/*.xx.com_ecc/*.xx.com.key;
   location / {
   	   # 真实IP转发 (非默认端口需要添加$server_port)
   	   proxy_set_header  X-Real-IP    $remote_addr;
   	   proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass  http://your-proxy-server:8080/;
   }
}

同一个vRouter网络的容器,可以通过容器名或容器定义的网络名进行内部访问。

参考代理前端项目配置

server {
   listen       443 ssl;
   server_name  vue-web.xx.com;
   #charset koi8-r;
   #access_log  /var/log/nginx/host.access.log  main;
   ssl_certificate conf.d/ssl/xx.com_bundle.crt;
   ssl_certificate_key conf.d/ssl/xx.com.key;
   gzip on;
   gzip_http_version 1.1;
   gzip_static on;
   gzip_min_length 1;
   gzip_comp_level 4;
   gzip_vary on;
   gzip_types text/plain application/javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
   location / {
       root   /usr/share/nginx/html/vue-web; 
       index  index.html index.htm;
       try_files $uri $uri/ /index.html;
   }
}

 

部署脚本参考deploy.sh

#!/bin/sh
work_path=$(dirname $0)
cd ${work_path}
work_path=$(pwd) 
echo $work_path
docker-compose --compatibility  build;docker-compose --compatibility down;docker-compose --compatibility up -d;docker image prune -f

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
部署目录结构tree -a ././├── conf.d #nginx 自定义配置映射目录│ ├── default.conf #存放一些通用配置(可选)│ ├
项目依赖说明Docker compose 示例docker-compose.yml 配置示例version: "3.8"networks: demoRouter
Docker从容器复制文件到主机sudo docker cp 容器名称/容器id:容器文件/目录 主机目录示例:sudo docker cp nginx:/et
案例需求配置示例version: "3.8"networks: demoRouter:services: demo-mysql8: image: mysql:8
在执行多次docker-compose build 之后,我们通过命令`docker images`可以看到很多的REPOSITORY 为<none&gtl; 且tag 也是<non...
Ubuntu 系统安装DockerUbuntu 在线安装 Docker-XQLEE'Blog (在线安装,需外网好)Ubuntu 安装Docker 国内适用-X
docker 常用命令整理(持续更新)docker运行容器资源相关查看所有运行docker的资源消耗情况docker stats查看指定运行容器资源消耗情况do
Docker简介Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可
旧域名:https://hub.docker.com 新域名:https://hubgw.docker.com/
Docker中容器/镜像的备份、恢复和迁移今天,我们将学习如何快速地对docker容器进行快捷备份、恢复和迁移。Docker是一个开源平台,用于自动化部署应用,
官方命令docker system prune -a特别注意:该命令会删除没有被使用的镜像 over
背景Docker 对于新手开发者部署一些中间件或者开发环境比较友好,可惜官方image hub已被F...。内部使用必须依赖三方的镜像库,例如阿里云的https
Docker Nodejs 18.20.4 环境编译vue项目 sudo docker run --rm --name node18c -v /your/pro
问题国区现在已经完全访问不了docker hub的镜像了,对于使用来说很不方便。各个大厂的公共镜像站也陆续下降,除了收费镜像服务外,稍有几个能稳定用的。这里用一
Docker报错Error running DeviceCreate (createPool) dm_task_run failed,无法启动问题解决 由于我这