docker 容器間通信

參考:Docker Compose:連接外部容器的幾種方式
參考內容中有些許實現不到位的地方,按照測試例子,跑不起來,故參考後進行了一些修改,從新寫了下文章記錄一下,
有些本身理解的可能不是很到位,你們湊合着看下,有問題歡迎指出,在此先謝過了,(⊙v⊙)。html

本文的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-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"/>。
相關文章
相關標籤/搜索