參考:Docker Compose:連接外部容器的幾種方式
參考內容中有些許實現不到位的地方,按照測試例子,跑不起來,故參考後進行了一些修改,從新寫了下文章記錄一下,
有些本身理解的可能不是很到位,你們湊合着看下,有問題歡迎指出,在此先謝過了,(⊙v⊙)。html
docker network create app_net # 查看建立的網絡 docker network ls
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
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
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
#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; } }
因此上述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&characterEncoding=UTF-8"/>。