And*_*set 4 wordpress docker docker-compose
我正在使用 docker-compose 设置一个 NextJS 应用程序,该应用程序从在单独容器中运行的 Wordpress REST-API 获取数据。
问题是,ECONNREFUSED当我尝试从 NextJS 容器中获取或 WGET wordpress 容器http://wordpress:8000时,我得到了。我可以 ping 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:
Run Code Online (Sandbox Code Playgroud)
从 NextJS 容器内部,您需要使用 port 80。8000从您的(主机)机器移植它。所以在 docker 容器内使用http://wordpress:80。
ports:
- "8000:80"
Run Code Online (Sandbox Code Playgroud)
在你的 docker-compose 文件中只是说:“将我的本地(主机)端口映射8000到容器端口80”,但在 docker 网络内部,它仍然是端口80
您可以 ping,因为 ping 不使用端口。我们所说的端口是 TCP/UDP 端口,请参阅https://en.wikipedia.org/wiki/Port_(computer_networking)。但是 ping 使用 ICMP(Internet 控制消息协议),它根本不使用端口,请参阅https://en.wikipedia.org/wiki/Ping_(networking_utility)
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |