在 php artisan serve 之后在端口 8000 上获取 PHP 容器
Get PHP container on port 8000 after php artisan serve
即使在我的 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 获取容器的 ip检查 name_container 和数字卷曲 ip_of_container:8000 什么都没有。
当使用 docker-compose exec
时,命令保持 运行 直到它的交互式会话停止(通过使用 ctrl-c
或关闭终端),因为它不是 运行一项服务。为了能够保持下面的命令运行
docker-compose exec app php artisan serve
您必须打开 2 个终端,1 个使用命令,1 个用于连接到容器并 ping 端口 8000
如果您想访问您的容器端口 8000,您必须在 Dockerfile:
中公开端口 8000
# rest of docker file
# Copy existing application directory permissions
#COPY --chown=www-data:www-data ./code /var/www/html
# Change current user to www-data
#USER www-data
# Expose port 9000 and start php-fpm server
EXPOSE 80
EXPOSE 80000
并将其映射到您的主机 docker-compose
(file):
app:
build:
context: .
dockerfile: .config/php/Dockerfile
image: salvio/php-composer-dev
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www/html
ports:
- "80:80"
- "8000:8000"
volumes:
- ./code/:/var/www/html
- .config/php/php.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- myproject-network
请记住 php artisan serve
绑定到 localhost:8000
。这意味着这只能在容器内到达。使用
php artisan serve --host 0.0.0.0
绑定到共享网络接口。查看以下资源:
即使在我的 docker-compose.yml 文件中添加端口映射后,我也无法在端口 8000 上侦听容器。
所有相关文件都可以在这里找到:https://github.com/salvatore-esposito/laravel-dockerized
我 运行 以下命令:docker-compose exec app php artisan serve
并且 运行 成功。
无论如何,如果我进入容器内部,curl 会按预期工作,但它在外部不起作用。连接被拒绝。
我使用 docker-machine 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 获取容器的 ip检查 name_container 和数字卷曲 ip_of_container:8000 什么都没有。
当使用 docker-compose exec
时,命令保持 运行 直到它的交互式会话停止(通过使用 ctrl-c
或关闭终端),因为它不是 运行一项服务。为了能够保持下面的命令运行
docker-compose exec app php artisan serve
您必须打开 2 个终端,1 个使用命令,1 个用于连接到容器并 ping 端口 8000
如果您想访问您的容器端口 8000,您必须在 Dockerfile:
中公开端口8000
# rest of docker file
# Copy existing application directory permissions
#COPY --chown=www-data:www-data ./code /var/www/html
# Change current user to www-data
#USER www-data
# Expose port 9000 and start php-fpm server
EXPOSE 80
EXPOSE 80000
并将其映射到您的主机 docker-compose
(file):
app:
build:
context: .
dockerfile: .config/php/Dockerfile
image: salvio/php-composer-dev
container_name: app
restart: unless-stopped
tty: true
environment:
SERVICE_NAME: app
SERVICE_TAGS: dev
working_dir: /var/www/html
ports:
- "80:80"
- "8000:8000"
volumes:
- ./code/:/var/www/html
- .config/php/php.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- myproject-network
请记住 php artisan serve
绑定到 localhost:8000
。这意味着这只能在容器内到达。使用
php artisan serve --host 0.0.0.0
绑定到共享网络接口。查看以下资源: