1.拉取 nginx鏡像
docker pull nginx:1.27
查詢nginx鏡像包可使用,OFFICIAL-[OK],表示官方鏡像
docker search nginx
2.創(chuàng)建nginx配置文件提陶,無(wú)特殊要求可跳過(guò)
//創(chuàng)建配置文件
touch /xxx/default.conf
//編輯
vi /xxx/default.conf
i
//保存退出
esc
:wq
default.conf 內(nèi)容
server {
listen 80;
# 填寫綁定證書的域名
server_name 域名 www.域名;
# 把http的域名請(qǐng)求轉(zhuǎn)成https儡蔓,相當(dāng)于用戶訪問(wèn)http也可以自動(dòng)跳轉(zhuǎn)到https外厂,避免出現(xiàn)網(wǎng)頁(yè)提示不安全
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
# 證書文件路徑, 私鑰文件名稱 .crt和.pem都可以用
ssl_certificate /etc/nginx/cert/xxx(域名).pem;
# 私鑰文件路徑
ssl_certificate_key /etc/nginx/cert/(xxx)域名.key;
# 服務(wù)域名
server_name 域名 www.域名;
# 日志格式化規(guī)則
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
# 指定日志目錄和規(guī)則
#access_log /var/log/nginx/host.access.log main;
# 小程序端+學(xué)生端API接口
location /wx_mini/ {
# 服務(wù)一:
proxy_pass http://服務(wù)一IP:端口/;
}
# 教師端+校管端API接口
location /pc_manager/ {
# 服務(wù)二
proxy_pass http://服務(wù)二IP:端口/;
}
# PC用戶管理系統(tǒng)前端頁(yè)面
location /manager {
# 托管前端網(wǎng)站一:
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /manager/index.html;
}
# 后管端API
#location /admin_sys/ {
# 服務(wù)三:
# proxy_pass http://服務(wù)三IP:端口/;
#}
# 范圍大的放后面
# 訪問(wèn)域名直接打開的網(wǎng)站泥畅,這里配置服務(wù)端不分離的項(xiàng)目
location / {
# 根目錄直接代理服務(wù)端前后不分離項(xiàng)目
proxy_pass http://服務(wù)四:端口/;
#proxy_redirect http://150.158.123.38:8902/ /;
#root /usr/share/nginx/html;
#index index.html index.htm;
#try_files $uri $uri/ /index.html;
}
# 狀態(tài)碼404 -> 指向首頁(yè)
# error_page 404 /index.html
# 狀態(tài)碼為xxx -> 指向xxx
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
3. 創(chuàng)建單個(gè)容器或使用docker-compose配置nginx
1.創(chuàng)建單個(gè)容器
# 多行便于展示()
docker run -p 80:80 -p 443:443 \
-d --name nginx \
# nginx的根配置文件,可不掛載使用其默認(rèn)的
-v /data/nginx/nginx.conf:/etc/nginx/nginx.conf \
# nginx自定義的配置文件凭豪,做反向代理和負(fù)載均衡時(shí)焙蹭,需修改里面的default.conf文件內(nèi)容
-v /data/nginx/conf.d:/etc/nginx/conf.d \
# 掛載域名證書和私鑰
-v /data/nginx/cert:/etc/nginx/cert
# 靜態(tài)資源目錄,一般用來(lái)掛載前端打包的網(wǎng)站項(xiàng)目或靜態(tài)資源
-v /data/www:/usr/share/nginx/html \
nginx:1.27
2.使用容器編排創(chuàng)建
version: '3'
services:
nginx: # 服務(wù)名稱 建議與容器名稱一致
image: nginx:1.27 # 當(dāng)前數(shù)據(jù)庫(kù)的版本
container_name: nginx # 容器名稱
environment:
# - TZ=Asia/Shanghai # 設(shè)置容器時(shí)區(qū) 我這里通過(guò)下面掛載方式同步的宿主機(jī)時(shí)區(qū)和時(shí)間了,這里忽略
volumes:
# 靜態(tài)網(wǎng)站
- /www/wwwroot/java_psm/nginx/www:/usr/share/nginx/html
# 日志文件
- /www/wwwroot/java_psm/nginx/log:/var/log/nginx
# 證書目錄
- /www/wwwroot/java_psm/nginx/cert:/etc/nginx/cert
# 主配置
- /www/wwwroot/java_psm/nginx/nginx.conf:/etc/nginx/nginx.conf
# 自定義配置
- /www/wwwroot/java_psm/nginx/conf.d:/etc/nginx/conf.d
ports:
- "80:80"
- "443:443" # 指定宿主機(jī)端口與容器端口映射關(guān)系嫂伞,宿主機(jī):容器孔厉,宿主機(jī)ip根據(jù)使用情況進(jìn)行修改
restart: always # 容器隨docker啟動(dòng)自啟
docker-compose 常用指令
docker-compose stop <容器ID/服務(wù)名> # 停止指定服務(wù)容器,不指定停止所有
docker-compose restart <容器ID/服務(wù)名> # 重啟指定服務(wù)容器帖努,不指定全部重啟
docker-compose build <容器ID/服務(wù)名> # 重新構(gòu)建指定容器撰豺,不指定全部重新構(gòu)建
docker-compose -f docker-compose.yml up -d # -f運(yùn)行指定的編排文件,不指定則默認(rèn)在當(dāng)前目錄尋找docker-compose.yml
docker exec -it <容器名/容器ID> bash(bin/bash) 進(jìn)入某個(gè)容器內(nèi)部