Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 可以在Docker容器之间ping但不能wget_Wordpress_Docker_Docker Compose - Fatal编程技术网

Wordpress 可以在Docker容器之间ping但不能wget

Wordpress 可以在Docker容器之间ping但不能wget,wordpress,docker,docker-compose,Wordpress,Docker,Docker Compose,我正在使用docker compose设置一个NextJS应用程序,它从运行在不同容器中的Wordpress REST-API获取数据 问题是,当我试图从NextJS容器中获取或WGET wordpress容器时,我得到了ECONNREFUSED。我可以平wordpress:8000没有任何问题 如果我使用Postman或尝试使用公共ip从另一台主机(即不是运行docker compose的机器)获取REST-API,那么它工作得非常好 我怀疑docker的配置有问题,但我很迷茫,因为Ping可

我正在使用docker compose设置一个NextJS应用程序,它从运行在不同容器中的Wordpress REST-API获取数据

问题是,当我试图从NextJS容器中获取或WGET wordpress容器时,我得到了
ECONNREFUSED
。我可以平wordpress:8000没有任何问题

如果我使用Postman或尝试使用公共ip从另一台主机(即不是运行docker compose的机器)获取REST-API,那么它工作得非常好

我怀疑docker的配置有问题,但我很迷茫,因为Ping可以工作,但wget不能

有人知道凶手是什么吗

我的docker compose.yml

version: '2'
  services:
  db:
   image: mysql:5.7
   volumes:
     - db_data:/var/lib/mysql
   restart: always
   environment:
     MYSQL_ROOT_PASSWORD: ***REMOVED***
     MYSQL_DATABASE: ***REMOVED***
     MYSQL_USER: ***REMOVED***
     MYSQL_PASSWORD: ***REMOVED***
   networks:
     - back
   wordpress:
     depends_on:
     - db
     image: wordpress:latest
   volumes:
     - ./wp-content:/var/www/html/wp-content 
   ports:
     - "8000:80"
   restart: always
   environment:
     WORDPRESS_DB_HOST: db:3306
     WORDPRESS_DB_USER: root
     WORDPRESS_DB_PASSWORD: ***REMOVED****
   networks:
     - back
   phpmyadmin:
   depends_on:
     - db
   image: phpmyadmin/phpmyadmin
   restart: always
   ports: 
     - 8080:80
   environment:
     PMA_HOST: db
     MYSQL_ROOT_PASSWORD: ***REMOVED***
   networks:
     - back
   next-app:
     depends_on:
       - wordpress
   build:
     context: ./next-app
     dockerfile: Dockerfile
   volumes:
     - './next-app:/usr/src/app'
     - '/usr/src/app/node_modules'
   ports:
     - '80:3000'
   networks:
     - back
 express-server:
   build:
   context: ./express-server
   dockerfile: Dockerfile
   ports:
     - '3001:3001'
networks:
   back:
   driver: bridge
volumes:
   db_data:

从NextJS容器内部,您需要使用端口
80
。端口
8000
它来自您的(主机)计算机。所以从docker容器内部使用


在您的docker compose文件中只说:“将我的本地(主机)端口
8000
映射到容器端口
80
”,但在docker网络中,它仍然是端口
80


您可以ping,因为ping不使用端口。我们讨论的端口是TCP/UDP端口,请参阅。但是ping使用ICMP(Internet控制消息协议),它根本不使用端口,请参见

我有两个容器,容器端口为80,并将phpmyadmin端口更改为81。然后我把它拿到wordpress:80上,它就成功了!太好了,非常感谢!!
   ports:
     - "8000:80"