为了账号安全,请及时绑定邮箱和手机立即绑定

在 php artisan serve 后获取端口 8000 上的 PHP 容器

在 php artisan serve 后获取端口 8000 上的 PHP 容器

PHP
紫衣仙女 2021-12-03 19:15:16
即使在我的 docker-compose.yml 文件上添加端口映射后,我也无法容器侦听端口 8000。所有相关文件都可以在这里找到:https : //github.com/salvatore-esposito/laravel-dockerized我运行了以下命令:docker-compose exec app php artisan serve并且它已成功运行。无论如何,如果我进入容器内部,curl 会按预期工作,但从外面就行不通了。连接被拒绝。我使用获取了 ip 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 和 digit curl ip_of_container:8000 什么都没有。

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

使用docker-compose exec命令时会一直运行,直到它的交互式会话停止(通过使用ctrl-c或关闭终端),因为它不是作为服务运行的。为了能够保持以下命令运行


docker-compose exec app php artisan serve

您必须打开 2 个终端,1 个使用命令,1 个连接到容器和 ping 端口 8000


如果要访问容器端口 8000,则必须8000在Dockerfile 中公开该端口:


# 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


查看完整回答
反对 回复 2021-12-03

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号