php - 像 URL 一样访问 docker 容器
问题描述
我有一个用 PHP、Nginx 和 dynamodb 开发的应用程序。我创建了一个简单的 docker-compose 在本地工作。
version: '3.7'
services:
nginx_broadway_demo:
container_name: nginx_broadway_demo
image: nginx:latest
ports:
- 8080:80
volumes:
- ./www:/var/www
- ./docker/nginx/vhost.conf:/etc/nginx/conf.d/default.conf
- ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
links:
- php_fpm_broadway_demo
php_fpm_broadway_demo:
container_name: php_fpm_broadway_demo
build:
context: ./docker/php
ports:
- 9000:9000
volumes:
- .:/var/www/web
dynamodb:
image: amazon/dynamodb-local
ports:
- 8000:8000
expose:
- 8000
现在我需要添加 dynamodb URL 参数以允许 PHP 对数据库进行查询。因此,如果我像这样从 PHP docker 容器进行 ping 操作,效果很好:
ping dynamodb
这行不通。
ping http://dynamodb:8000
我需要使用 http://dynamodb:8000,因为 AWS 需要一个 URI,因为如果我使用 http://dynamodb:8000 会出现此错误:
Endpoints must be full URIs and include a scheme and host
那么:如何像 URL 一样调用 docker 容器?我尝试过使用 docker-compose 参数,例如:depends
, links
,network
但没有成功
解决方案
正如聊天中所讨论的,当依赖项安装在主机上并在容器内用作基础平台上的作曲家工作时,就会出现错误。
因此,我们调查该问题是由于上述原因造成的。安装dependency
在容器内解决了这个问题。
docker exec -it php bash -c "cd web; composer install"
推荐阅读
- c# - 带有 sql server 的 C# wpf 应用程序仅适用于我的电脑
- python - 使用 Pycharm 不使用 Anaconda 的 Anaconda 程序
- java - 使用 GSON 在 Java 中解析 JSON
- llvm - 了解 IR 流程
- android - 未收到来自匿名加入用户的任何音频
- python - 将数组输入用于 numpy mgrid 函数,而不是数组上的 for 循环
- tcp - C3P0 半开连接关闭
- javascript - 用于 HTML 画布的更快 Bresenham 线
- java - AWS API Gateway 获取 API 密钥
- javascript - 如何计算居中 div 的顶部和左侧位置?