Docker Nginx部署笔记

目的

把前端开发的项目,用ng代理访问,前端基于antd+react

已打包到dist文件夹

Ng常用知识

1、启停操作:

nginx -s stop 快速关机

nginx -s quit 正常关机

nginx -s reload 重新加载配置文件

nginx -s reopen 重新打开日志文件

2、配置文件位置:

/usr/local/nginx/conf, /etc/nginx或 /usr/local/etc/nginx

3、ng可以服务静态资源和代理请求

服务静态资源

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

代理请求

server {
    location / {
        proxy_pass http://localhost:8080/;
    }

    location ~ \.(gif|jpg|png)$ {
        root /data/images;
    }
}

遇到的问题

遇到的问题1:

Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "container init exited prematurely".

解决方式:

1.卸载旧版本 docker

yum remove docker docker-common docker-selinux dockesr-engine -y

2.升级系统软件

yum upgrade -y

3.安装必要的一些系统工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4.添加软件源信息

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5.更新并安装 docker-ce

yum makecache fast yum install docker-ce -y

6.启动服务

systemctl daemon-reload systemctl restart docker

遇到的问题2:

升级成功了docker,满心欢喜,结果: Cannot restart container d387c3101a2b: no such runtime 'docker-runc'

解决方式:

grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g' systemctl restart docker

遇到的问题3:

Unable to find image,明明有啊!!!

更新了镜像源,发现:

遇到的问题4:

Failed to start Docker Application Container Engine.

解决方式:

重新修改镜像源:

原来为:{"insecure-registries":["公司私有地址", "http://hub-mirror.c.163.com", "https://hub.docker.com/"]}

修改为:{"registry-mirrors":["公司私有地址", "http://hub-mirror.c.163.com", "https://hub.docker.com/"]}

猜想,有可能是升级过后,docker的加速配置变更了。

遇到的问题5:

其实就是问题3并未解决,然后看了看ng的日志

docker logs id

 

英语不好,大概领会到是没有挂载ng的宿主机的日志目录

于是docker run的时候加上了日志目录

解决方式:

docker run --name myNG -v /zab/nginx/nginx.conf:/etc/nginx/nginx.conf -v /zab/nginx/log:/etc/nginx/log -d nginx:1.17.9

还是翻车了,没得端口映射

Docker部署Nginx

1、docker pull nginx:1.17.9

具体版本信息,可到https://hub.docker.com/_/nginx?tab=description查看

 

2、docker run 这里很关键,这个run,怎么个run法??

加上端口映射,还是继续翻车:

 

思考1:可能自己创建的文件夹,没有赋予权限

执行:

chmod 777  file

过后,发现不是这个问题

思考2:可能是ng配置文件的问题

配置是有问题,并且启动方式也有问题,ng挂载目录需要三个:

1、配置文件

2、日志

3、静态资源

所以最终的docker run是这样的:

docker run --name myNG -p 8083:80 -v /zab/nginx/nginx.conf:/etc/nginx/nginx.conf -v /zab/nginx/log:/etc/nginx/log -v /zab/nginx/static:/home -d nginx:1.17.9

这里把docker容器的home文件夹当做静态资源目录,映射出来

配置文件是这样的:

events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}
http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {
      server 118.24.232.124:80;
      #server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页
    server {
        #keepalive_requests 120; #单连接请求上限次数。
        listen       80;   #监听端口
        server_name  118.24.232.124;   #监听地址 
        include /etc/nginx/default.d/*.conf;
        #location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
         location / {
           root /home;  #根目录
           index index.html index.htm;  #设置默认页
           #proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表       
        }
    }
}

最需要注意的是,这个[root  /home]应该配置容器的地址,而不是挂载出来的宿主机的地址!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值