2017-01-04 148 views
0

我已經使用symfony/fosrest等構建了簡單的api端點。我可以通過symfony在服務器端構建它,例如:php bin/console server:run訪問rest api端點docker

現在我想訪問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 

,改變你的搬運工應用端口8000:8000在泊塢窗,compose.yml

現在你應該可以按如下方式訪問您的端點。

POST http://192.168.99.100/api/myendpoint 

您的碼頭IP地址可能與我的不同。

回答

1

你應該真的提供你的docker-compose.yml來幫助診斷問題,但我會說這是一個或多個以下問題(我知道,因爲我可能在某些時候完成了他們所有的錯誤):

  • 命令php bin/console server:run失敗,因爲它沒有在正確的目錄中運行。 docker-composer up上的日誌會告訴你這個和容器將無法啓動

  • 你的服務器正在監聽默認端口8000,並且不接受來自外部環回地址的連接。您可以將IP和端口組合作爲參數提供給服務器:運行以覆蓋此參數。請參閱Symfony文檔中的Using the built-in Web Server from inside a Virtual Machine

  • 您的端口映射在docker-compose.yml上不正確,它應該使用您在server:run命令中使用的端口。

  • 你有阿帕奇或正在產生的頁面在主機上運行的另一個網站服務器看到

+0

新增泊塢窗,compose.yml。謝謝我已經解決了這個問題。非常感謝。 – Viraths