参考: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"/>。