1、下载Nginx镜像
docker pull nginx:1.19
2、启动Nginx
docker run --name nginx -d -p 80:80 nginx
3、创建Nginx配置文件目录 主要是为了挂载docker容器中Nginx里的配置,我习惯将文件放在home目录,可以自行修改
mkdir /home/nginx
mkdir /home/nginx/html
mkdir /home/nginx/data
mkdir /home/nginx/logs
mkdir /home/nginx/conf.d
4、将docker里Nginx里的配置文件和目录拷贝到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/
docker cp nginx:/etc/nginx/conf.d/ /home/nginx/conf.d/
5、停止、删除 nginx容器
#5、停止nginx容器
docker stop nginx
#删除nginx容器
docker rm nginx
#查看nginx容器是否删除
docker ps -a
说明:以上步骤是为了将配置文件拷贝到宿主机
6、创建容器并挂载文件
docker run --restart=always --privileged=true \
-p 80:80 --name nginx1.19 \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf.d:/etc/nginx/conf.d \
-v /home/nginx/logs:/vat/log/nginx \
-v /home/nginx/data:/data \
-d nginx:1.19
参数说明
–restart=always : 设置开机自启动,这里指的是docker启动的时候Nginx也随之启动(设置docker开机自启命令为:systemctl enable docker)
–privileged=true:使用该参数,container内的root拥有真正的root权限。
-p 80:80 :端口映射,将Nginx在docker中的80端口映射到宿主机的80端口,第一个80为宿主机,第二个80为容器内Nginx启动后的端口。例如p 8000:80,浏览器就得通过xxx.xxx.xxx.xxx:8000来访问Nginx
-v /home/nginx/html:/usr/share/nginx/html 挂载Nginx的工作目录
-v /home/nginx/nginx.conf:/etc/nginx/nginx.conf 挂载Nginx的配置文件
-v /home/nginx/conf.d:/etc/nginx/conf.d 挂载Nginx其他配置文件所在的文件夹,主要是主配置文件引用其他配置
-v /home/nginx/logs:/vat/log/nginx 挂载Nginx的日志文件夹
-v /home/nginx/data:/data 挂载Nginx的数据文件
-d 后台运行
7、配置文件说明
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
server {
# 监听 80 端口 值得注意的是,这里的localhost是镜像里面的
listen 80;
server_name localhost;
# 指定外面访问到 localhost 下的跟,这里的跟又映射到了宿主机路径去
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 多个项目(后台管理系统)
location /manage {
alias /usr/share/nginx/html/manage/dist;
index index.html;
}
# 多个项目(前端H5客户端)
location /webapp {
alias /usr/share/nginx/html/webapp/dist;
index index.html;
}
# 后端应用的接口反向代理
location /api/ {
rewrite ^/api(/.*)$ $1 break;
proxy_pass http://192.168.120.142:8099;
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header Authorization $http_Authorization;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
}