安装Nginx
mkdir -p /data/docker/nginx/logs
mkdir -p /data/docker/nginx/html
docker run --network=host --restart=always --name nginx -d \
-v /data/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /data/docker/nginx/html:/etc/nginx/html \
-v /data/docker/nginx/logs:/var/log/nginx \
-v /data/app:/data/app \
nginx:latest
准备工作:创建目录
mkdir -p /data/docker/nginx/logs
mkdir -p /data/docker/nginx/html
mkdir -p:递归创建目录,如果父目录不存在则一并创建
/data/docker/nginx/logs:用于存储 Nginx 访问日志和错误日志的目录
/data/docker/nginx/html:用于存放网站静态文件(HTML/CSS/JS等)的目录
目的:在宿主机上创建持久化存储目录,确保容器重启后数据不丢失
Docker 运行命令详解
docker run \
--network=host \ # 网络模式
--restart=always \ # 重启策略
--name nginx \ # 容器命名
-d \ # 后台运行
-v /data/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \ # 配置文件挂载
-v /data/docker/nginx/html:/etc/nginx/html \ # 网站文件挂载
-v /data/docker/nginx/logs:/var/log/nginx \ # 日志挂载
-v /data/app:/data/app \ # 应用数据挂载
nginx:latest # 使用最新版 Nginx 镜像
1. 网络配置 --network=host
使用宿主机的网络命名空间
容器直接使用宿主机的 IP 地址和端口
优点:网络性能最好,无 NAT 转换损耗
缺点:端口冲突风险(容器直接使用主机端口)
2. 重启策略 --restart=always
容器退出时自动重启
包括 Docker 服务重启后自动启动容器
确保 Nginx 服务高可用
3. 容器命名 --name nginx
将容器命名为 "nginx"
方便后续管理:docker stop nginx/docker start nginx
4. 后台运行 -d
Detached 模式(后台运行)
终端释放,不阻塞当前会话
配置文件
配置文件路径/data/docker/nginx/nginx.conf
#user nobody;
worker_processes 2;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
server_tokens off;
client_max_body_size 5g;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /model {
add_header 'Access-Control-Allow-Headers' 'X-Requested-With';
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
add_header 'Cross-Origin-Opener-Policy' 'same-origin';
add_header 'Cross-Origin-Embedder-Policy' 'require-corp';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'X-Frame-Options' 'ALLOWALL';
alias html/model;
index index.html index.htm;
}
location /api {
proxy_pass http://localhost:8080;
}
location /psmap/web {
alias /data/app/static/web;
try_files $uri $uri/ /psmap/web/index.html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
}
3895

被折叠的 条评论
为什么被折叠?



