• Centos7系统Docker环境下Nginx反向代理


    目录

    1.拉取nginx镜像

    2.Docker Compose


    1.拉取nginx镜像

    1.拉取nginx镜像

    [root@localhost ~]# docker pull nginx
    Using default tag: latest
    latest: Pulling from library/nginx
    27833a3ba0a5: Pull complete 
    ea005e36e544: Pull complete 
    d172c7f0578d: Pull complete 
    Digest: sha256:e71b1bf4281f25533cf15e6e5f9be4dac74d2328152edf7ecde23abc54e16c1c
    Status: Downloaded newer image for nginx:latest

    2.可以直接运行测试一下

    [root@localhost ~]# docker run -d -p 8080:80 nginx
    [root@localhost ~]# curl -I  http://localhost:8080
    HTTP/1.1 200 OK
    Server: nginx/1.15.12
    Date: Thu, 25 Apr 2019 14:39:08 GMT
    Content-Type: text/html
    Content-Length: 612
    Last-Modified: Tue, 16 Apr 2019 13:08:19 GMT
    Connection: keep-alive
    ETag: "5cb5d3c3-264"
    Accept-Ranges: bytes
    [root@localhost ~]# 
    

    2.Docker Compose

    Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作。

    1.安装Docker Compose

    官网的安装教程:安装Docker Compose

    可以从官网获取最新的版本

    [root@localhost ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100   617    0   617    0     0    752      0 --:--:-- --:--:-- --:--:--   752
    100 15.4M  100 15.4M    0     0  1731k      0  0:00:09  0:00:09 --:--:-- 2687k
    [root@localhost ~]# 
    [root@localhost ~]# chmod +x /usr/local/bin/docker-compose
    [root@localhost ~]# docker-compose --version
    docker-compose version 1.24.0, build 0aa59064

    2.创建docker-compose.yml

    Dcoker Compse的执行文件是docker-compose.yml,所以我们在测试项目下创建一个docker-compose.yml文件。

    [root@localhost ~]# cd Documents/DockerWeb
    [root@localhost DockerWeb]# touch docker-compose.yml

    编辑该文件,写入以下内容,保存退出。

    version: '2'
    services:
        docker-web:
            container_name: docker-web-compose
            build: .
    
        reverse-proxy:
            container_name: reverse-proxy
            image: nginx
            ports:
             - "9090:8080"
            volumes:
             - ./proxy.conf:/etc/nginx/conf.d/default.conf
    
    #简单介绍下上面的配置文件,其中定义了两个服务:
    #一个是docker-web,即以我们当前项目目录来构建镜像并启动一个叫docker-web-compose的容器。
    #一个是reverse-proxy,用来使用nginx镜像进行反向代理,其中又通过指定volumes来使用挂载的方式进行配置,配置文件是当前路径下的proxy.conf。

    创建proxy.conf配置文件

    [root@localhost DockerWeb]# touch proxy.conf

    编辑该文件,写入以下内容,保存退出。

    server {
        listen 8080;
    
        location / {
          proxy_pass http://docker-web:5000;
        }
    }
    
    #其中要注意反向代理的配置:proxy_pass http://docker-web:5000;,其中ip部分直接指定的是docker-compose.yml中定义的第一个服务的名称docker-web。

    创建完后我们看一下该目录的内容

    [root@localhost DockerWeb]# ll
    total 356
    -rw-r--r--. 1 root root    146 Apr 24 14:04 appsettings.Development.json
    -rw-r--r--. 1 root root    105 Apr 24 14:04 appsettings.json
    -rw-r--r--. 1 root root    287 Apr 25 14:55 docker-compose.yml
    -rw-r--r--. 1 root root    137 Apr 24 14:51 Dockerfile
    -rw-r--r--. 1 root root 228338 Apr 24 14:41 DockerWeb.deps.json
    -rw-r--r--. 1 root root   9216 Apr 24 14:35 DockerWeb.dll
    -rw-r--r--. 1 root root   1924 Apr 24 14:35 DockerWeb.pdb
    -rw-r--r--. 1 root root    224 Apr 24 14:41 DockerWeb.runtimeconfig.json
    -rw-r--r--. 1 root root  78848 Apr 24 14:35 DockerWeb.Views.dll
    -rw-r--r--. 1 root root   5496 Apr 24 14:35 DockerWeb.Views.pdb
    -rw-r--r--. 1 root root     92 Apr 25 14:54 proxy.conf
    -rw-r--r--. 1 root root    526 Apr 24 14:41 web.config
    drwxr-xr-x. 6 root root     71 Apr 24 22:48 wwwroot
    

    3.运行Compose

    [root@localhost DockerWeb]# docker-compose up -d
    Creating network "dockerweb_default" with the default driver
    Building docker-web
    Step 1/6 : FROM microsoft/dotnet:latest
     ---> e268893be733
    Step 2/6 : WORKDIR /app
     ---> Using cache
     ---> 636e51b35e60
    Step 3/6 : COPY . /app
     ---> 26c5b7a83367
    Step 4/6 : EXPOSE 5000
     ---> Running in 54796fcb8c07
    Removing intermediate container 54796fcb8c07
     ---> 6663d8b3df8f
    Step 5/6 : ENV ASPNETCORE_URLS http://*:5000
     ---> Running in a6d66985a77e
    Removing intermediate container a6d66985a77e
     ---> 586c4cc1cf75
    Step 6/6 : ENTRYPOINT ["dotnet","DockerWeb.dll"]
     ---> Running in 812c66d16d72
    Removing intermediate container 812c66d16d72
     ---> 8da5e977ec16
    Successfully built 8da5e977ec16
    Successfully tagged dockerweb_docker-web:latest
    WARNING: Image for service docker-web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
    Creating docker-web-compose ... done
    Creating reverse-proxy      ... done
    [root@localhost DockerWeb]# 

    运行完后我们可以看下镜像跟容器是否存在相应的内容,最后可以再用curl测试下

    [root@localhost DockerWeb]# docker images
    REPOSITORY             TAG                 IMAGE ID            CREATED              SIZE
    dockerweb_docker-web   latest              8da5e977ec16        About a minute ago   1.74GB
    nginx                  latest              27a188018e18        8 days ago           109MB
    microsoft/dotnet       latest              e268893be733        2 weeks ago          1.74GB
    [root@localhost DockerWeb]# docker ps
    CONTAINER ID        IMAGE                  COMMAND                  CREATED              STATUS              PORTS                            NAMES
    72584de2c725        nginx                  "nginx -g 'daemon of…"   About a minute ago   Up About a minute   80/tcp, 0.0.0.0:9090->8080/tcp   reverse-proxy
    1b3adbbe8ec0        dockerweb_docker-web   "dotnet DockerWeb.dll"   About a minute ago   Up About a minute   5000/tcp                         docker-web-compose
    dd45358d8c37        nginx                  "nginx -g 'daemon of…"   About an hour ago    Up About an hour    0.0.0.0:8080->80/tcp             friendly_bhaskara
    [root@localhost DockerWeb]# docker-compose ps
           Name                Command          State               Ports             
    ----------------------------------------------------------------------------------
    docker-web-compose   dotnet DockerWeb.dll   Up      5000/tcp                      
    reverse-proxy        nginx -g daemon off;   Up      80/tcp, 0.0.0.0:9090->8080/tcp
    [root@localhost DockerWeb]# curl -I http://localhost:9090
    HTTP/1.1 200 OK
    Server: nginx/1.15.12
    Date: Thu, 25 Apr 2019 15:01:41 GMT
    Content-Type: text/html; charset=utf-8
    Connection: keep-alive
    
    [root@localhost DockerWeb]# 
    

    参考博客:

    .NET Core容器化之多容器应用部署(Docker-Compose)

  • 相关阅读:
    dell N5010
    centos7 teamviewer
    E40笔记本无线网卡
    sqlite的bool字段
    System.data.sqlite安装
    关于AutoResetEvent 和ManualResetEvent
    实时刷新winform中的某一个控件上的文字
    C#中的静态构造函数
    apm的学习资料
    C# 版本和.NET 版本以及VS版本的对应关系
  • 原文地址:https://www.cnblogs.com/zt102545/p/13940229.html
Copyright © 2020-2023  润新知