本文完成了在docker中部署nginx,并将本地主机的nginx配置文件、日志目录、静态资源目录挂载到容器的对应目录上,可在本地主机上完成nginx配置、日志查看等操作。
一、拉取nginx镜像
docker pull nginx # 拉取最新版本的镜像
docker pull nginx:版本 # 如果要拉取某一版本的,使用此命令
二、准备配置文件
在主机目录下创建文件,然后将这些文件挂载到nginx容器上,用于配置nginx、查看访问日志和存放静态资源,而不是进入容器中去配置nginx、查看日志等操作。另外一个优点是,如果容器被删除,这些文件不会被删除,可以重复使用。
# 启动一个容器
docker run -d --name nginxapp nginx
# 查看容器是否启动成功
docker container ls
# 在当前目录下创建目录 conf,我的当前目录是/root/nginx
mkdir conf
# 拷贝容器内nginx默认配置文件到当前目录下
docker cp nginxapp:/etc/nginx/nginx.conf $PWD/conf
docker cp nginxapp:/etc/nginx/nginx.conf.d $PWD/conf
# 完成拷贝后,停止删除容器,重启一个容器关联配置文件
docker stop nginxapp # 停止容器
docker rm nginxapp # 删除容器
# 创建html目录 存放静态资源
mkdir html
# 创建logs目录 保存访问日志
mkdir logs
三 、创建nginx容器
通过以下命令创建nginx容器
docker run -d -p 8080:80 \
--name nginxapp \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/logs:/var/log/nginx \
nginx
-d 表示容器在后台运行,防止退出容器后,容器被停止或删除
-p 8080:80 映射本机8080端口到容器的80端口
--name nginxapp 设置容器名称为nginxapp
-v 将本地文件挂载到容器的指定目录
四、修改nginx配置
由于默认的nginx配置文件,不能满足访问路由要求,因此需要重新配置nginx文件
cd /root/nginx/conf/ # 进入nginx配置目录
vim nginx.conf # 打开配置文件
修改配置文件如下:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
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 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name localhost;
location / {
root 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;
}
location /testApp/ { # 映射访问url,到静态资源文件下
alias /usr/share/nginx/html/testApp;
index index.html index.htm;
}
}
}
配置完成后需要重启nginx容器
docker stop nginxapp # 先停止nginxapp容器
docker start nginxapp # 在启动nginxapp容器
五、访问测试
# 在html中新建testApp目录
mkdir testApp
# 在testApp目录下新建index.html
cd testApp
# 通过vim编辑器,编辑index.html 这里内容为 welcome my testApp
vim index.html
# 编辑完成后,退出编辑器
打开浏览器输入链接http://公网或本地ip:8080/testApp/index.html
显示如下内容welcome my testApp,则部署成功~
如果是vue或者react项目,可以将打包后的文件放在html目录下,然后在nginx.conf配置访问的url映射。