记一次无外网络(不能连接因特网)的信创服务器部署案例(二)

背景:

  1. 应用程序已经通过U盘传入到服务器中。可以参考通过U盘传数据到 kylin系统
  2. 应用由多独立的服务组合而成, 且都是以docker容器来提供服务。
  3. docker image有: nginx:1.15.11, 后端extract个镜像
  4. 两个容器:mynginx, extract都可以独立运行起来了,可独立验证通过。

部署目标:

让整个应用都跑起来。

坑点:

  1. 服务器未连接网络,未能找到物理网卡(ifconfig中,无 eth0 相关配置)
  2. 在配置 nginx.conf文件时, 配置代理使用了extract容器的名称和IP地址,都不行。

验证过程及解决方案如下:

将以上情形转移到windows10系统下, 验证结果如下

  • nginx.conf file
events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    types_hash_max_size 4096;
    client_max_body_size 1024m;

    keepalive_timeout  300;
    server {
        listen       80;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
	    try_files $uri $uri/ /index.html;
        }

   	# location /api/ {
    #     	proxy_pass http://extract:9999/;
    # 	}
    
    location /xpi/ {
            # 1. 宿主机IP地址 不行,原因:127.0.0.1此时是容器的地址,而不是宿主机的。
            proxy_pass http://127.0.0.1:7115/;

            # 2. 不行,原因:0.0.0.0表示接受任何 IP 的请求,表示授权。而不是指定 IP。
            # proxy_pass http://0.0.0.0:7115/;  
            
            # 3. extract容器的IP地址 不行, 原因: 宿主机的容器,不在同一个 network 下,不能互相访问
            # proxy_pass http://172.19.0.3:7115/;
            
            # 4. extract容器名称,也是服务名称 不行,原因: 宿主机的容器,不在同一个 network 下,不能互相访问
            # proxy_pass http://extract:7115/; 
            
            # 5. extract容器名称,也是服务名称 不行,原因:未指定端口号
            # proxy_pass http://extract/;
            
            # 6.windown10的以太网适配器 vEthernet (Default Switch)IP地址  OK
            # proxy_pass http://172.20.0.1:7115/;

            # 7. windown10的以太网适配器 vEthernet (WSL): IP地址  OK
            # proxy_pass http://172.23.64.1:7115/;

            # 8. windown10的未知适配器 Mihomo: OK
            # proxy_pass http://198.18.0.1:7115/;

            # 9. windows及macos下,使用特殊的host OK
            # proxy_pass http://host.docker.internal:7115/;
 
            # 10. linux下 使用docker0的IP地址 在其它linux服务器上验证 OK  
            ## 10.1 kylin服务器上,使用 nginx容器启动时, 若配置为 docker0的 IP 地址,依然不行。

            # 11. 使用host网络 OK。
            ## 11.1 在 kylin 服务器下:
	            1. 将mynginx的docker-compose.yml文件中添加 `network_mode: host`
	            2. 使用docker0的IP地址,使用 127.0.0.1IP 地址
	            3. 重启mynginx容器。
	            4. 在网页上验证通过。
	      # 12. 将所有容器启动过程放到一个 docker-compose 文件下, A 容器调 B 容器的服务,则可以在 A 容器的配置文件(如环境变量)配置 B 容器的容器名(服务名,docker0的 IP 地址, 宿主机 IP 都可以的),宿主机 IP 不推荐使用。这会导致数据流还将从宿主机的网络中走一下,纯属浪费,但不知为啥,nginx服务的容器中,配置其它容器的 IP 地址不行。
         

        }
    
        
       
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}



  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值