容器(docker)内运行Nginx

时间:2021-11-29 20:42:52

容器内运行nginx其实很简单,但是一开始还是浪费了我很多时间。这里写下来给大家省点时间。

1、创建nginx文件夹,放置各种配置及日志等。

mkdir /docker/nginx

docker 文件夹是我存放所有基础设施容器的地方。

2、创建nginx配置文件

cd /docker/nginx
vim nginx.conf

nginx.conf为主配置文件

user  nginx;
worker_processes ; error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid; events {
worker_connections ;
} 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 ; #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 ;
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)内运行Nginx

docker-compose对格式要求很严格注意里面的空格。

解释下我的设置

restart  永远重启

image 从nginx镜像拉取

ports 输出使用80,443端口

volumes 挂载外部卷到docker内部。这样就可以使用我们刚才创建好的配置了。

(这里面:ro的意思是只读的意思,表示第一第二个卷只能被容器读取不能写入)

docker-compose文件内容如下方便大家copy

version: '3.0'

services:
nginx:
restart: always
image: nginx
ports:
- :
- :
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

容器(docker)内运行Nginx

5、其他

  • 如果你的nginx版本跟你的配置不一致,你可以进入到容器内看看。
docker exec -it 容器id /bin/bash
  • 停止镜像
docker-compose down