zoukankan      html  css  js  c++  java
  • 在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

  • 相关阅读:
    ubuntu 16.04 更新后搜狗输入法无法输入中文的问题
    转: 苹果APNS的说明
    转:svn 更新指定文件夹
    转: Java 应用一般架构
    【原创】关于bug反正出现的问题可能
    App开发者博客之: 包建强 (专注移动app开发)
    转: 阿里跨平台移动开发工具Weex
    【原创】存储层设计的一些方法论
    转:车牌的自动截取与识别方案
    转: java web demo的示例
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/14095837.html
Copyright © 2011-2022 走看看