我在为本地主机上的码头设置而挣扎。当用本地域调用file_get_contents()函数时,我收到三个警告:
1. SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
2. Failed to enable crypto
3. failed to open stream: Cannot assign requested address最初,我有一个相对复杂的设置,以nginx作为反向代理、自签名SSL证书、mariadb、wordpress、wpcli、phpmyadmin、mailhog和redis。为了简单起见,我正在粘贴一个简单的docker-组合文件。在这个设置中,我得到: file_get_contents()未能打开流:无法分配请求的地址
version: '3.6'
services:
mysql:
container_name: docker-test-mysql
image: mariadb:latest
volumes:
- ./db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_DATABASE: docker-test
restart: always
ports:
- 3306:3306
networks:
- webnet
wordpress:
container_name: docker-test-wordpress
image: wordpress:latest
ports:
- 8000:80
volumes:
- wp_data:/var/www/html:rw,cached
- ./wordpress:/var/www/html:rw,cached
depends_on:
- mysql
restart: always
environment:
WORDPRESS_DB_NAME: docker-test
WORDPRESS_TABLE_PREFIX: wp_
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: root
WORDPRESS_DEBUG: 1
networks:
- webnet
networks:
webnet:
external: true
driver: bridge
volumes:
db_data: {}
wp_data: {}该函数在调用外部域时工作,但仅对本地域(https://my-local-domain.local或http://localhost:8000)失败。
我遗漏了什么?任何帮助都是非常感谢的!
诚挚的问候
发布于 2022-04-08 10:28:16
码头就是这样工作的。容器中的localhost本身就是。您正在将容器的端口80映射到本地机器的8000端口上。
但是在同一个容器中,正确的url只是本地主机或您的坞-组合文件中容器的名称(在本例中是wordpress),因为docker也创建了一个网络,并使用网络中的服务别名来查找它们。
所以您可以使用file_get_contents('http://localhost/...')或file_get_contents('http://wordpress/...')
如果要使用其他别名,还可以在docker复合文件中添加额外的主机。
https://stackoverflow.com/questions/71794883
复制相似问题