zoukankan      html  css  js  c++  java
  • Docker學習

    1.不挂載volumn的方式啓動image
    docker run -d -p 80:80 --name nginx-test nginx
    2.拷貝文件完後停止container docker cp nginx-test:/etc/nginx/.
    /usr/local/docker/nginx/conf
    docker stop nginx-test
    docker rm nginx-test
    目錄結構如下

    [centos@centos7 ~]$ tree /usr/local/docker
    /usr/local/docker
    └── nginx
    ├── conf
    │   ├── conf.d
    │   │   └── default.conf
    │   ├── fastcgi_params
    │   ├── mime.types
    │   ├── nginx.conf
    │   ├── scgi_params
    │   └── uwsgi_params
    ├── html
    │   └── index.html
    └── logs
    ├── access.log
    └── error.log

    3.挂載本地目錄啓動container
    docker run -it -p 80:80 -v /usr/local/docker/nginx/conf:/etc/nginx
    -v /usr/local/docker/nginx/html:/usr/share/nginx/html
    -v /usr/local/docker/nginx/logs:/var/log/nginx
    --privileged=true --name mynginx nginx
     
     
    nginx.conf (不變)
    user  nginx;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log notice;
    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" $upstream_addr $upstream_response_time $request_time ';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    

     

    default.conf
    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
        
        location /apptst/ {
            proxy_pass  http://192.168.0.109:8080/;
            proxy_set_header  Host              $http_host;   # required for docker client's sake
            proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
            proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto $scheme;
        }
    }
    

      

    4.改動了/usr/local/docker/nginx/conf/conf.d/default.conf后,要重啓container才生效
    docker stop mynginx
    docker start mynginx
    測試
    curl http://192.168.0.109/apptst/health-status
     
    5.將app啓動在兩個端口上做負載均衡
    default.conf
     
    upstream apptst_server{
      server 192.168.0.109:8080 weight=1;
      server 192.168.0.109:8081 weight=1;
    }
    
    
    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
        
        location /apptst/ {
            proxy_set_header  Host              $http_host;   # required for docker client's sake
            proxy_set_header  X-Real-IP         $remote_addr; # pass on real client's IP
            proxy_set_header  X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header  X-Forwarded-Proto $scheme;
           # proxy_pass http://192.168.0.109:8080/;
            proxy_pass http://apptst_server/;
        }
        
    
    }
    

     

    測試
    curl http://192.168.0.109/apptst/health-status
    =》
    curl http://192.168.0.109:8080/health-status
    curl http://192.168.0.109:8081/health-status
    查看/usr/local/docker/nginx/logs/access.log

     

    6.利用docker compose把nginx和兩個dotnet應用綁定在一起啓動

    [centos@centos7 ~]$ cd /usr/app
    [centos@centos7 app]$ docker-compose up -d
     
    docker-compose.yml
    version: '1.0'
    
    services:
      nginx:
        restart: always
        image: nginx
        container_name: mynginx
        ports:
          - 80:80
          - 443:443
        volumes:
          - /usr/local/docker/nginx/conf:/etc/nginx
          - /usr/local/docker/nginx/html:/usr/share/nginx/html 
          - /usr/local/docker/nginx/logs:/var/log/nginx
      apptst:
        restart: always
        image: apitest:v1
        container_name: apitest
        build:
          context: .
          dockerfile: /usr/app/apptst/Dockerfile
        ports:
          - 8080:80
      apptst1:
        restart: always
        image: apitest:v1
        container_name: apitest1
        build:
          context: .
          dockerfile: /usr/app/apptst/Dockerfile
        ports:
          - 8081:80
    

      

  • 相关阅读:
    使用XmlWriter写入XML
    Xml的一些基本概念(摘抄自w3school.com.cn)
    Basler相机启动问题xml读取出错
    c#开方,平方,sin函数计算
    如果遇到继承控件,添加到新项目里在工具栏找不到的情况下,F5启动一下,重新生成是不会有的,要运行成功才有
    添加项目文件时候不要把引用文件直接放到bin-debug里
    发现三个很好看的控件
    merge into 批量修改语句
    -- oracle上一些查询表和字段语句
    -- oracle上查看储存过程内容
  • 原文地址:https://www.cnblogs.com/sui84/p/15456603.html
Copyright © 2011-2022 走看看