docker 容器间通讯

参考:Docker Compose:链接外部容器的几种方式
参考内容中有些许实现不到位的地方,按照测试例子,跑不起来,故参考后进行了一些修改,重新写了下文章记录一下,
有些自己理解的可能不是很到位,大家凑合着看下,有问题欢迎指出,在此先谢过了,(⊙v⊙)。

本文的docker 版本为1.13.1,具体操作如下

创建同一网络

docker network create app_net

# 查看创建的网络
docker network ls 

yml配置如下

  • mysql
version: '3'
services:
  mysql-service:
    image: mysql:5.7
    environment:
    - MYSQL_ROOT_PASSWORD=root
    restart: always
    ports:
    - "3306:3306"
    volumes:
    - /docker-service/mysql-5.7/data:/var/lib/mysql
    - /docker-service/mysql-5.7/conf:/etc/mysql/conf.d
    networks:
    - custom_net
networks:
  custom_net:
   external:
      name: app_net
  • app-tomcat
version: '3'
services:
  app-service:
    image: tomcat:9.0
    environment:
      TZ: Asia/Shanghai
    restart: always
    ports:
      - 8080:8080
    volumes:
    - /docker-service/app-tomcat-9.0/webapps:/usr/local/tomcat/webapps
    - /docker-service/app-tomcat-9.0/logs:/usr/local/tomcat/logs
    networks:
    - custom_net
networks:
  custom_net:
    external:
      name: app_net
  • nginx
version: '3'
services:
  nginx-service:
    image: nginx:1.14
    restart: always
    ports:
    - "80:80"
    volumes:
    - /docker-service/nginx-1.14/conf:/etc/nginx/conf.d
    - /docker-service/nginx-1.14/logs:/wwwlogs
    - /docker-service/nginx-1.14/www:/www
    networks:
    - custom_net
networks:
  custom_net:
    external:
      name: app_net
  • nginx 挂载后的配置文件,原容器中有一个default.conf,监听的事nginx的启动页,这里映射后,把default.conf覆盖了,故需/docker-service/nginx-1.14/conf下创建custom.conf重启容器
#api接口转发custom.conf
server {
    server_name xx.xxxx.com
    underscores_in_headers on;
    index index.html;
    location / {
        add_header 'Access-Control-Allow-Origin' '*';
        proxy_pass http://app-service:8080/;
        #try_files $uri $uri/ /index.html;
    }
}

解析下yml配置及相关说明

《docker 容器间通讯》

所以上述docker-compose.yml中声明服务,nginx 中proxy.conf配置的app-service:8080,相当于通过tomcat的容器ip,
调用tomcat的8080端口,简单的将yml中的服务名称,理解为,加入同一网络后的"host"即可,这样理解起来更方便直观一点,
如tomcat中调用mysql服务,spring配置可以用
<property name="url" value="jdbc:mysql://mysql-service:3306/finance?useUnicode=true&amp;characterEncoding=UTF-8"/>。
    原文作者:luckyjiet
    原文地址: https://segmentfault.com/a/1190000019447425
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞