2017-01-04 2 views
0

Я создал простую точку api с помощью symfony/fosrest и т. Д. Я могу получить к ней доступ через сборку symfony на сервере, то есть: php bin/console server:run.Access rest api endpoint docker

Теперь я хочу получить доступ к api в докере. Я создал docker-compose.yml с php-apache и mysql-изображением. Теперь, когда я пытаюсь подключиться к конечным точкам следующим образом, я получаю запрещенную ошибку (403). Я предполагаю, что моя конфигурация apache в изображении докеры php-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> 

* EDIT - 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: 

ОТВЕТ:

запустить следующие в приложении фреймворка.

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 и портов в качестве аргумента для сервера: запустите, чтобы переопределить это. См Using the built-in Web Server from inside a Virtual Machine в документации Symfony

  • Ваше отображение порта неверно в docker-compose.yml, то следует использовать порт, который вы используете в команде server:run.

  • Вы апаш или другой веб-сервер работает на хост-машине, которая производит на страницу, которую вы видите

+0

Добавлена ​​Докер-compose.yml. Спасибо, я исправил это после ваших советов. Большое спасибо. – Viraths