【发布时间】:2019-12-29 12:55:54
【问题描述】:
即使在我的 docker-compose.yml 文件中添加端口映射后,我也无法在端口 8000 上进行监听。
所有相关文件都可以在这里找到:https://github.com/salvatore-esposito/laravel-dockerized
我运行了以下命令:docker-compose exec app php artisan serve,它已经成功运行了。
无论如何,如果我进入容器内部,curl 会按预期工作,但从外部无法正常工作。连接被拒绝。
我使用docker-machine ip获取了ip
请注意,我通过 docker-compose.yml 映射了容器中的内外端口,即使在存储库中没有映射。
我尝试将所有文件复制到构建的映像并启动:
docker run --rm -p 8000:8000 --name laravel salvio/php-laravel php artisan serve
和
docker exec -it laravel bash
再一次,如果运行“curl localhost:80”和“curl localhost:8000”,前者不起作用,后者起作用,而如果我通过 docker 检查 name_container 和数字 curl ip_of_container:8000 获取容器的 ip什么都没有。
【问题讨论】:
-
php artisan 不应该用于托管 laravel 站点,您应该将 apache 配置为指向 laravel 文件夹。您可以绑定
8000:80,以便能够使用80000从主机访问容器 -
我知道,但是例如,如果我只使用没有 apache 的 php 容器,它应该工作吗?我的好奇心是我无法通过端口 8000 访问容器,即使有内部 php 服务器正在监听。
-
它在哪里列出它运行
serve命令? github.com/salvatore-esposito/laravel-dockerized/blob/master/…。 @Salvio -
我是通过 bash 手动完成的:docker-compose exec app php artisan serve。我告诉它:这只是我的好奇心,因为使用端口 80 一切正常。
-
这不是特定于内部 php 服务器的,这是大多数应用程序的默认设置。我更新了答案以包含主机信息,您可以将其标记为已解决吗? @Salvio