docker 网路配置 no route host

前情提要:

    因公司需求,要在本地搭建测试环境centos,原本在云服务上都没有一点问题的,但是在本地环境自己搭建的时候就是出各种幺蛾子。

状况一,当我启动镜像的时候,启动过程报错。提示MySQL jdbc出错,no route host,也找了许多办法在网上,解决的方法是开放端口,参考文档https://blog.csdn.net/zx110503/article/details/78787483

我是将3306端口一级6379端口都开放了的。这里有一个小细节就是,与其开放端口,那直接关闭防火墙不就可以了吗?一开始我也是嫌麻烦的,后来我在docker-compose up 的时候会出错,所以只选择了开放端口,上面链接钟那个老哥说的还不错,我试过没有问题。

到这里第一步就解决了,镜像启动没有报错。

这个192.168.0.32是我宿主机的IP,这里我本想用docker inspect mysql 查询到的子IP来代替的,但是与后文中的docker-compose会有冲突,这里有可能会产生两个子域网,两者不能互通所以选用这个。

状况二:即使解决了第一步,接下来还会遇到一些问题,就比如nginx在路由分配的问题上。如果这里没有配置好的话,极有可能会发生404错误。

我是这样配置的

version: '3'
services:
  nginx:
   container_name: mynginx
   image: nginx
   restart: always
   ports:
   - 80:80
   networks:
    myset:
     ipv4_address: 172.18.0.2
   volumes:
   - ./nginx/nginx.conf:/etc/nginx/nginx.conf
  auth-server:
   restart: always
   container_name: auth-server
   image: auth-server
   volumes:
   - ./auth:/opt/project/auth
   ports:
   - 8081:8081
   networks:
    myset:
     ipv4_address: 172.18.0.4
   depends_on:
   - nginx
  resource-server:
   restart: always
   container_name: resource-server
   image: resource-server
   volumes:
   - ./resource:/opt/project/resource
   ports:
   - 8083:8083
   networks:
    myset:
     ipv4_address: 172.18.0.3
   depends_on:
   - nginx

#注意空格,对齐方式,以下是这定义子网IP

networks:
  myset:
   ipam:
    config:
    - subnet: 172.18.0.0/16
有了这个docker-compose.yaml之后,我就可以自动生成我想要的镜像以及容器了。

到这里并不能结束,还有nginx的配置

upstream auth{
                server 172.18.0.4:8081;
        }
        upstream resource{
                server 172.18.0.3:8083;
        }
    server {
        listen       80;
        server_name  192.168.0.32;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /user/{
            limit_req zone=one burst=5;
            proxy_pass http://auth;
        }
        location /device/{
            limit_req zone=one burst=5;

       }

红色是重点,因为在那个yaml的文件中,我是将nginx,auth,resource一起构建启动的,然而MySQL与redis并不是同时启动的,所以才有这样的区分,同一个子域的我都是用子网IP来代替,不在一个子网就使用宿主机IP,这样做。

总的来说,这其实可以归类为一个问题,那就是docker的网路配置问题,这是重点,本文只是作为一个参考,更详细的还请参考官方文档说明,如有不足请指出一起探讨,感谢

猜你喜欢

转载自blog.csdn.net/weixin_41195786/article/details/87106619
今日推荐