我运行一系列独立运行的站点,但需要能够通过PHP对自定义单点登录服务进行curl调用。
如果我将所有站点设置为单独的容器堆栈(这意味着单点登录有自己的共享容器集(Nginx、PHP和MySQL),而site1有自己的共享容器集,site2、site3和site4也是如此),那么它们就不能相互通信。我已经尝试设置了一个自定义网络,但是我必须包括一个主机文件,该文件指定了SSO服务器URL的IP地址,以便其他站点可以连接到该网络。
这是我当前的docker-compose文件:
version: "3"
services:
nginx:
image: nginx:1.10.3
ports:
- "8080:80"
- "8443:443"
volumes:
- ./projects:/var/www
- ./.docker/nginx/sites-enabled/site.conf:/etc/nginx/conf.d/site.conf
- ./.docker/nginx/sites-enabled/site-ssl.conf:/etc/nginx/conf.d/site-ssl.conf
- ./.docker/certs:/etc/nginx/certs
links:
- php
networks:
mc-net:
ipv4_address: 172.245.0.2
php:
build:
context: ./.docker/fpm
volumes:
- ./projects:/var/www
- ./.docker/sessions.inc.php:/var/www/sessions/sessions.inc.php
- ./.docker/fpm/hosts.txt:/etc/hosts
expose:
- "9000"
links:
- percona:percona
networks:
mc-net:
ipv4_address: 172.245.0.3
percona:
image: percona/percona-server:5.6
environment:
MYSQL_ROOT_PASSWORD: *****
TZ: America/Los_Angeles
ports:
- "8306:3306"
volumes:
- ./.docker/database:/var/lib/mysql
command:
- 'sh -c "ln -snf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime && echo America/Los_Angeles > /etc/timezone"'
- '--user=mysql'
networks:
mc-net:
ipv4_address: 172.245.0.4
networks:
mc-net:
driver: bridge
ipam:
config:
- subnet: 172.245.0.0/16我是Docker的新手,我只是需要一种方法来让site1可以通过它的网址卷曲到单点登录。我不知道该怎么做,谢谢。
发布于 2018-02-02 01:08:53
对所有容器使用docker网络,只需按名称调用sso容器即可。如果所有使用sso的服务都在docker网络中,那么您甚至不需要公开sso的端口。
ssodockername:port
https://stackoverflow.com/questions/48565400
复制相似问题