首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问rest端点停靠程序

访问rest端点停靠程序
EN

Stack Overflow用户
提问于 2017-01-04 10:02:20
回答 1查看 921关注 0票数 0

我使用symfony/fosrest等构建了简单的api端点,我可以通过服务器(即:php bin/console server:run )中的symfony构建来访问它。

现在我想访问docker中的api。我用php-apache和mysql映像创建了docker-compose.yml。现在,当我试图按如下方式连接到端点时,就会被禁止(403)错误。我假设我在docker apache映像中的apache配置是不正确的。有人能帮我解决这个问题吗。谢谢。

代码语言:javascript
复制
endpoint: POST http://192.168.99.100/api/myendpoint

错误如下。

代码语言:javascript
复制
<!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

代码语言:javascript
复制
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应用程序中运行以下命令。

代码语言:javascript
复制
docker exec -it your_container_name php bin/console server:run 0.0.0.0:8000

并在docker -come.yml中将您的坞应用程序端口更改为8000:8000

现在您应该能够访问您的端点,如下所示。

代码语言:javascript
复制
POST http://192.168.99.100/api/myendpoint 

你的IP地址可能和我的不一样。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-04 11:04:26

您确实应该提供您的dockerCompose.yml来帮助诊断问题,但是我要说,这是一个或多个问题(我知道,因为我可能在某个时候也做错了所有这些问题):

  • 命令php bin/console server:run失败,因为它没有在正确的目录中运行。docker-composer up上的日志将显示这一点,容器将无法启动。
  • 您的服务器正在侦听默认端口8000,并且不接受来自环回地址之外的连接。您可以提供一个IP和端口组合体作为服务器的参数:运行以覆盖这一点。见Symfony文档中的从虚拟机内部使用内置的Web服务器
  • 您的端口映射在docker-compose.yml中是不正确的,它应该使用您在server:run命令中使用的端口。
  • 在正在生成所看到的页面的主机上运行apache或另一个webserver。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41461028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档