在两个不同的docker堆栈中运行的服务可以通信吗?
这是我尝试过但无法实现的目标。
我虽然这可能会有所帮助并创建一个外部网络并尝试 将stack1和stack2中的服务添加到它,以便它们可以 也是彼此沟通
Mystack1 docker-compose file
version: "3.4"
networks:
apps-net:
db-net:
external:
name: db-net
services:
web:
image: nginx:latest
ports:
- "9080:80"
volumes:
- ./code:/code
- ./site.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- apps-net
- db-net
deploy:
mode: replicated
replicas: 1
php:
image: php:7-fpm
volumes:
- ./code:/code
networks:
- apps-net
- db-net
deploy:
mode: replicated
replicas: 1
我的stack2 docker-compose文件
version: '3.3'
networks:
db-net:
external:
name: db-net
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: root
MYSQL_PASSWORD: password
networks:
- db-net
volumes:
db_data:
我使用docker network create db-net
命令
输出:
nginx和php工作正常,但我添加了数据库连接 index.php中的代码导致错误消息。是错误 因为他们没有连接?我已经安装了php-mysql扩展 它也有错误。我怎样才能确保服务 沟通成功。
nginx and php working
Fatal error: Uncaught Error: Call to undefined function mysqli_connect() in /code/index.php:11 Stack trace: #0 {main} thrown in /code/index.php on line 11
答案 0 :(得分:0)
而不是网络(我经常在堆栈上看到这些网络没有像预期的那样工作)尝试使用Sub CopyWorkbook()
Dim sh as Worksheet, wb as workbook
Set wb = workbooks("Target workbook")
For Each sh in workbooks("source workbook").Worksheets
sh.Copy After:=wb.Sheets(wb.sheets.count)
Next sh
End Sub
,这很好地解释了here。
尝试删除所有自定义网络配置,只需修改您的应用程序撰写文件,如下所示:
external_links
其中version: "3.4"
# removed all custom networks configuration
services:
web:
image: nginx:latest
external_links:
- mysql_1:mysql
[..]
php:
image: php:7-fpm
external_links:
- mysql_1:mysql
[..]
是由后一个撰写文件创建的实际容器名称,mysql_1
是一个别名,您的服务将在mysql
和php
个容器中可用
链接是v3中的遗留选项,Docker建议使用网络。 我发布了关于swarm部署的编辑,因为方法完全不同,因为Docker在部署swarm时会忽略链接。