容器內運行nginx其實很簡單,但是一開始還是浪費了我很多時間。這里寫下來給大家省點時間。
1、創建nginx文件夾,放置各種配置及日志等。
mkdir /docker/nginx
docker 文件夾是我存放所有基礎設施容器的地方。
2、創建nginx配置文件
cd /docker/nginx
vim 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; }
最后一句include /etc/nginx/conf.d/*.conf;
這里的*.conf就是子配置。我只創建了一個default.conf
mkdir /docker/nginx/conf.d cd /docker/nginx/conf.d vim default.conf
在default.conf里面加入你的server級別的配置。
我這里只是監聽了80端口,並反向代理到了5000端口

server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:5000; # 這里設置你要代理的ip+端口 } }
3、創建docker-compose.yml容器編排
vim /docker/nginx/docker-compose.yml
docker-compose對格式要求很嚴格注意里面的空格。
解釋下我的設置
restart 永遠重啟
image 從nginx鏡像拉取
ports 輸出使用80,443端口
volumes 掛載外部卷到docker內部。這樣就可以使用我們剛才創建好的配置了。
(這里面:ro的意思是只讀的意思,表示第一第二個卷只能被容器讀取不能寫入)
docker-compose文件內容如下方便大家copy

version: '3.0' services: nginx: restart: always image: nginx ports: - 80:80 - 443:443 volumes: - /docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - /docker/nginx/conf.d:/etc/nginx/conf.d:ro - /docker/nginx/log:/var/log/nginx
4、運行
要保證在我們剛才創建的目錄里
cd /docker/nginx
docker-compose up -d
加-d的意思是后台運行。大家可以試試不加 -d
5、其他
- 如果你的nginx版本跟你的配置不一致,你可以進入到容器內看看。
docker exec -it 容器id /bin/bash
- 停止鏡像
docker-compose down