在CentOS安装配置Nginx基于Docker容器方式
本教程假设你已经在CentOS7上安装完Docker服务
启动docker守护进程
systemctl start docker
步骤一:拉取nginx镜像
docker pull nginx:1.18.0
直接拉取Docker Hub的官方Nginx镜像(类似git bash的git pull,拉取远程仓库的最新内容更新)
docker images
查看本地所有的docker镜像
步骤二:基于nginx镜像创建容器
docker run -d --name mynginx -p 8888:80 nginx:1.18.0
启动一个名为mynginx的容器,同时将容器的80端口映射到宿主机的8888端口上
docker ps
查看所有运行中的容器
创建新容器用于部署
平时将应用部署到nginx上时,需要把前端打好包的dist文件夹放到html文件夹,然后修改nginx.conf配置文件配置代理等等,这是最基本的两个需求。容器化后的nginx怎么修改这两个地方呢?docker提供了 -v 选项,可以将容器内的目录挂载到本地目录,对本地目录内容的修改就可以反映到容器内。
cd /usr/testwork/nginx
然后使用docker的 cp 命令将上面启动的第一个mynginx容器内的nginx.conf复制进来
docker cp mynginx:/etc/nginx/nginx.conf nginx.conf
最后创建html文件夹
mkdir html
移除旧容器
上面旧的容器没用可以删掉了,使用命令
docker stop mynginx
docker rm mynginx
查看删除容器结果
docker ps -a
查看所有已创建的容器,发现mynginx已经没有了,接下来可以创建一个新的nginx容器了
创建新容器
输入命令
docker run -d --name nginx -p 80:80 \
-v /usr/testwork/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/testwork/nginx/html:/usr/share/nginx/html \
-v /usr/testwork/nginx/logs:/var/log/nginx \
nginx:1.18.0
关于容器内的目录是怎么获取的,我也是看别人的博客的。有日志需求的可以将本地目录挂载到/var/log/nginx,在本地查看nginx日志;无论挂不挂载都可以用docker logs nginx
命令查看日志(这里的nginx是容器名或容器id,所有容器都可以用这个命令查看日志)
部署应用
部署应用就和以往一样,在上面创建的nginx.conf里写好后端服务的代理等等,把前端打好的包丢进上面创建的html文件夹就行
附上我的nginx.conf
user nginx; worker_processes 1;
error_log /var/log/nginx/error.log warn; 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;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { # root '/usr/local/nginx/html/dist'; root /usr/share/nginx/html/dist; #root这里填了容器中的绝对路径 #我填相对路径如html/dist时 #容器会去/etc/nginx/html/dist找 index index.html index.htm; }
location /api { #这里是后端的设置,根据你的实际情况写 rewrite ^/api/(.*)$ /$1 break; proxy_pass localhost:8087; } } }
|
使配置生效,或者直接重启容器
docker restart nginx
到这里利用docker容器化nginx部署就完成了,输入地址访问你的应用,和非容器方式部署时并没有什么不同。
附录docker容器启动常用命令
docker run [OPTIONS] IMAGE:TAG
-d: 后台运行容器,并返回容器UUID(常用)
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-v, 给容器挂载存储卷,挂载到容器的某个目录(常用)
–name=”” 指定容器名字(如mynginx),可以通过这个容器名字进行容器管理(常用)
创建一个目录,存放docker compose的配置文件
cd /usr/testwork
mkdir nginx
chmod 777 nginx
docker-compose.yml