在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

posted @ 2020-12-07 10:20  Marlon康  阅读(278)  评论(0编辑  收藏  举报