Php Docker连接到本地主机
我有一些在docker容器上运行时不起作用的简单代码Php Docker连接到本地主机,php,docker,docker-compose,Php,Docker,Docker Compose,我有一些在docker容器上运行时不起作用的简单代码 $h=curl_init(); $header=[ '用户代理:Mozilla/5.0(X11;Linux x86_64;rv:33.0)Gecko/20100101 Firefox/33.0', “推荐人:https://shoots.video', ]; $url=str_replace(“localhost:8080”、“localhost”、$url); curl_setopt($h,CURLOPT_HTTPHEADER,$heade
$h=curl_init();
$header=[
'用户代理:Mozilla/5.0(X11;Linux x86_64;rv:33.0)Gecko/20100101 Firefox/33.0',
“推荐人:https://shoots.video',
];
$url=str_replace(“localhost:8080”、“localhost”、$url);
curl_setopt($h,CURLOPT_HTTPHEADER,$header);
curl_setopt($h,CURLOPT_URL,$URL);
curl_setopt($h,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($h,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($h,CURLOPT_RETURNTRANSFER,true);
$content=curl\u exec($h);
如果(旋度误差($h)){
回声“旋度误差:”.Curl_误差($h);
}
卷曲关闭($h);
echo$内容;
var_dump($content);
回显文件获取内容($url);
上面我尝试了curl和file\u-get\u内容。我只想连接到docker容器上运行的apache实例以加载网页
我得到的是:
string(0) ""
Warning: file_get_contents(http://localhost/flat-listings/?search_location=&search_radius=50&per_page=25&page=1&order=desc&orderby=rating-desc): failed to open stream: Cannot assign requested address
curl请求的var_转储为空
文件内容抛出一个警告
我尝试了host.docker.internal、127.0.0.1、$\u SERVER['SERVER\u ADDR']的变体,但都出现了不同的故障
这些容器是从docker compose文件运行的,因此如果我可以在docker-compose.yml中放入一些东西来修复它,那就太酷了
请理解,我想要100%的本地主机行为。没有别的了。我想从容器内部连接到容器。我似乎不明白为什么这样不行?我不想连接到mysql或其他东西。它只是一个php脚本,通过请求同一“网站”上的另一个页面连接回HTTP服务器
我正在linux上使用Docker
这是我的docker-compose.yml
version: '3.3'
services:
mysql:
image: mariadb
container_name: shootsmysql
volumes:
- vshootsdb:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: xxxx
MYSQL_DATABASE: wordpress1
MYSQL_USER: wordy
MYSQL_PASSWORD: xxxx
restart: always
ports:
- '3306:3306'
expose:
- '3306'
wordpress:
image: andreccosta/wordpress-xdebug
container_name: shootswordpress
volumes:
- vshootswp:/var/www/html/
depends_on:
- mysql
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_NAME: wordpress1
WORDPRESS_DB_USER: wordy
WORDPRESS_DB_PASSWORD: xxxx
WORDPRESS_TABLE_PREFIX: wp1_
links:
- mysql
restart: always
ports:
- "80:80"
expose:
- '80'
volumes:
vshootsdb:
vshootswp:
driver: local
driver_opts:
o: bind
type: none
device: /var/www/shoots/wordpress/
我已经研究了几种可能的解决方案(包括SO),要么a)我无法让它们工作,要么b)我对答案理解不够好,无法实施
因此,我要寻找的信息不仅仅是“Pass-network=host,就像文档中说的那样”。我已经尝试将网络模式:“主机”添加到wordpress的定义中,但没有乐趣。您可以使用docker网络模式主机:
如果您在Linux中,但所有虚拟域都将更改为双重检查,那么您正在从应用程序代码调用同一服务的HTTP接口<代码>本地主机应该在那里工作。您的URL提到端口8080,但您的
docker compose.yml
有端口80,这两个端口设置是否正确?代码删除了8080,原因是因为这是wordpress安装,所以URL是通过该方法设置的。这些端口正在转发(成功)网站的所有其他部分,但不是这一个脚本。写docker ps,你可以看到暴露的端口我已经专门尝试过了,没有任何乐趣。为了清楚起见,我在docker compose中使用了网络模式:“主机”。所以这并不意味着我做得对。。。