docker run 和 docker-compose 配置掛載 Volume 並執行 nginx
阿新 • • 發佈:2019-02-16
1.先在宿主機建立掛載目錄:mkdir -p /data/nginx/{conf,conf.d,html,logs}
2.然後把檔案 nginx.conf 檔案放到 /data/nginx/conf/
# 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; }
3.把子配置檔案 default.conf 放到 /data/nginx/conf.d/
# default.conf 例: server { listen 80; server_name localhost; # rewrite ^(.*)$ https://www.vhxsl.com permanent; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
4.弄一個 index.html 放到 /data/nginx/html/
5.nginx 日誌會在執行後存到 /data/nginx/logs/ 目錄
6.1 然後 docker run 直接執行 nginx:
docker run \ --name myNginx \ -d -p 8088:80 \ -v /data/nginx/html/:/usr/share/nginx/html \ -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \ -v /data/nginx/conf.d/:/etc/nginx/conf.d \ -v /data/nginx/logs/:/var/log/nginx/ \ nginx
6.2 另外如果用 docker-compose 或 swarm 起服務,docker-compose.yml 檔案如下:
version: "3"
services:
web:
image: nginx
ports:
- "8082:80"
volumes:
- /data/nginx/html:/usr/share/nginx/html
- /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /data/nginx/conf.d:/etc/nginx/conf.d
- /data/nginx/logs:/var/log/nginx
restart: always
container_name: myNginx2
docker-compose up -d 啟動服務
重新建立容器:docker-compose up -d --force-recreate