【发布时间】:2017-01-04 10:02:20
【问题描述】:
我已经使用 symfony/fosrest 等构建了简单的 api 端点。我可以通过服务器中的 symfony 构建访问它,即:php bin/console server:run。
现在我想在 docker 中访问 api。我用 php-apache 和 mysql 映像创建了 docker-compose.yml。现在,当我尝试按如下方式连接到端点时,出现禁止 (403) 错误。我假设我在 docker php-apache 映像中的 apache 配置不正确。谁能帮我解决这个问题。谢谢。
endpoint: POST http://192.168.99.100/api/myendpoint
错误如下。
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /api/myendpoint on this server.<br />
</p>
<hr>
<address>Apache/2.4.12 (Ubuntu) Server at 192.168.99.100 Port 80</address>
</body></html>
*编辑 - docker-compose.yml
version: "2"
services:
myapp:
build: ./docker
image: php5.6-apache
container_name: myapp
ports:
- "80:80"
volumes:
- .:/app
- $HOME/.composer/cache:/root/.composer/cache
working_dir: /app
links:
- mymysql
environment:
- APPLICATION_ENV=test
mymysql:
image: mysql:5.6
container_name: mymysql
ports:
- "3306:3306"
volumes:
- data:/var/lib/mysql
environment:
- MYSQL_USER=root
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=db
- MYSQL_ROOT_PASSWORD=password
volumes:
data:
回答:
在您的 symfony 应用程序中运行以下命令。
docker exec -it your_container_name php bin/console server:run 0.0.0.0:8000
并在 docker-compose.yml 中将您的 docker 应用程序端口更改为 8000:8000
现在您应该可以按如下方式访问您的端点了。
POST http://192.168.99.100/api/myendpoint
您的 docker IP 地址可能与我的不同。
【问题讨论】:
标签: php apache rest symfony docker