# 九.Nginx
前言
配置 nginx docker,挂载目录放到docker外部,方便修改配置与存放资源以及查看日志
# 1.获取镜像
docker pull nginx
1
# 2.拷贝配置
- 启动 nginx 容器
docker run --name nginx -p 90:80 -d nginx
1
- 创建挂载目录
xxx
mkdir -p /Users/zhoubichuan/nginx/nginx/conf
mkdir -p /Users/zhoubichuan/nginx/nginx/log
mkdir -p /Users/zhoubichuan/nginx/nginx/html
1
2
3
2
3
- 修改配置文件为本地
docker cp nginx:/etc/nginx/nginx.conf /Users/zhoubichuan/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /Users/zhoubichuan/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /Users/zhoubichuan/nginx/
1
2
3
2
3
- 删除容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
1
2
3
4
5
6
2
3
4
5
6
# 3.配置 nginx
server {
listen 80;
server_name 81.71.127.69;
location ~*^.+$ {
root /usr/src/zhoubichuan/prod;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 4.启动镜像
docker run \
-p 80:80 \
--name nginx \
--network dockerbetweennetwork \
-v /Users/zhoubichuan/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /Users/zhoubichuan/nginx/conf/conf.d:/etc/nginx.conf.d \
-v /Users/zhoubichuan/nginx/log:/var/log/nginx \
-v /Users/zhoubichuan/nginx/html:/usr/share/nginx/html \
-d nginx:latest
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
命令 | 描述 |
---|---|
–name nginx | 启动容器的名字 |
-d | 后台运行 |
--network dockerbetweennetwork | 桥接网络 |
-p 80:80 | 将容器的 80(后面那个) 端口映射到主机的 80(前面那个) 端口 |
-v /Users/zhoubichuan/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | 挂载 nginx.conf 配置文件 |
-v /Users/zhoubichuan/nginx/conf/conf.d:/etc/nginx.conf.d | 挂载 nginx 配置文件 |
-v /Users/zhoubichuan/nginx/log:/var/log/nginx | 挂载 nginx 日志文件 |
-v /Users/zhoubichuan/nginx/html:/usr/share/nginx/html | 挂载 nginx 内容 |
nginx:latest | 本地运行的版本 |
\ | shell 命令换行 |
# 5.Dockerfile
# 6.docker-compose
version: "3.8"
services:
web:
image: nginx:1.23-alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
docker-compose up -d
1
- 生产配置
version: "3.8"
services:
nginx:
image: nginx:1.23-alpine
container_name: production_nginx
ports:
- "80:80"
- "443:443"
volumes:
- ./config/nginx.conf:/etc/nginx/nginx.conf:ro
- ./config/conf.d:/etc/nginx/conf.d
- ./html:/usr/share/nginx/html
- ./logs:/var/log/nginx
- ./certs:/etc/ssl/certs
environment:
- TZ=Asia/Shanghai
- NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
networks:
- frontend
deploy:
resources:
limits:
cpus: "1.5"
memory: 512M
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 3s
retries: 3
networks:
frontend:
driver: bridge
attachable: true
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35