基于docker快速部署基于本地配置文件的nginx

首先要确保大家的服务器已经安装好了docker,若大家还没安装好docker,请大家先移步以下的博客地址,按照该步骤安装docker。

下载nginx

[root@bogon ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
base-jdk8           latest              897b04ba2617        2 days ago          598 MB
docker.io/centos    latest              9f38484d220f        2 weeks ago         202 MB
[root@bogon ~]# docker pull nginx // 下载nginx的镜像
Using default tag: latest
Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
27833a3ba0a5: Pull complete 
e83729dd399a: Pull complete 
ebc6a67df66d: Pull complete 
Digest: sha256:c8a861b8a1eeef6d48955a6c6d5dff8e2580f13ff4d0f549e082e7c82a8617a2
Status: Downloaded newer image for docker.io/nginx:latest
[root@bogon ~]# docker images // 查看本地的镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
base-jdk8           latest              897b04ba2617        2 days ago          598 MB
docker.io/nginx     latest              2bcb04bdb83f        7 days ago          109 MB
docker.io/centos    latest              9f38484d220f        2 weeks ago         202 MB
[root@bogon ~]# 

配置nginx的nginx.conf配置文件

在我们的服务器创建以下的文件路径:【/data/nginx/conf、/data/nginx/html、/data/nginx/logs】
同时在conf路径底下创建一个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;

    server {
        # 监听该docker的80端口
        listen   80;
        server_name localost;
       # 当前端响应http:\\xxxx:xx/admin/test/xxxx的时候回转发请求到http://127.0.0.1:8211/xxxx
        location /admin/test/ {
           rewrite ^/admin/test/(.*) /$1 break;
           proxy_pass http://127.0.0.1:8211/;
        }

启动基于本地配置文件的nginx

 docker run -d -p 8083:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs/:/var/log/nginx/ --name=nginx-t1 nginx

验证nginx是否启动成功

打开浏览器直接访问http:\xxxx:xx/admin/test/xxxx这时候我们会发现我们已经启动成功了。

常见错误排查

nginx启动不成功

大家可以直接执行如下的命令来查看:

[root@bogon conf]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
1a461e99281e        nginx               "nginx -g 'daemon ..."   5 minutes ago       Up 5 minutes        0.0.0.0:8083->80/tcp   nginx-t1
[root@bogon conf]# docker logs 1a461e99281e

或者大家可以直接查看logs目录底下的error日志。

nginx启动的时候本地配置的nginx没有生效

这时候大家要检查下我们的启动的docker命令挂载的目录是否正确,比如我们现在的挂载的配置的目录的位置是/data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf,大家确定下自己写在后面的/etc/nginx/nginx.conf是否写错了,不生效百分90的原因都是因为挂载路径写错了导致的。

终极排错方式

打开官网直接看官网文档:https://hub.docker.com/_/nginx

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐