docker php 端口号,Docker运行ReactPHP http服务器脚本 – 不暴露端口

我正在尝试构建轻量级api服务器,需要使用以下技术处理许多req / sec:

> 7.1-cli-alpine(docker image) – 小内存/磁盘空间,不需要Web服务器

> ReactPHP – 用于事件驱动编程的低级库(非阻塞I / O操作的完美选择)

这就是我把所有东西放在一起的方式.附:这个项目代号为fly-pony

泊坞窗,compose.yml:

flying_pony_php_service:

container_name: flying_pony_php_service

build:

context: ./service

dockerfile: Dockerfile

ports:

- "9195:8080"

volumes:

- ./service:/app

服务/ Dockerfile:

FROM php:7.1-cli-alpine

ADD . /app

COPY entrypoint.sh /entrypoint.sh

ENTRYPOINT /entrypoint.sh

服务/ entrypoint.sh

#!/bin/sh

/app/service.php

服务/ service.php

#!/usr/local/bin/php

require __DIR__ . '/vendor/autoload.php';

$loop = React\EventLoop\Factory::create();

$server = new React\Http\Server(function (Psr\Http\Message\ServerRequestInterface $request) {

$path = $request->getUri()->getPath();

$method = $request->getMethod();

if ($path === '/') {

if ($method === 'GET') {

return new React\Http\Response(200, array('Content-Type' => 'text/plain'), "Welcome to react-php version of flying pony api :)\n");

}

}

return new React\Http\Response(404, ['Content-Type' => 'text/plain'], 'Not found');

});

$socket = new React\Socket\Server(8080, $loop);

$server->listen($socket);

$loop->run();

当项目构建并运行时,我确认使用docker-compose ps并获得以下内容:

➜ flying_pony_php git:(reactphp) docker-compose ps

Name Command State Ports

-----------------------------------------------------------------------------------------

flying_pony_php_service /bin/sh -c /entrypoint.sh Up 0.0.0.0:9195->8080/tcp

flying_pony_php_worker /bin/sh -c /entrypoint.sh Up

flying_pony_redis docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp

因为一切都是建立和运行的;我在我的主机上访问过:http://localhost:9195并且页面没有加载(空响应错误).但是,如果我ssh到我的flying_pony_php_service容器并运行此命令:curl http:// localhost:8080 – 它正在工作(即ReactPHP http服务器响应,我收到上面定义的欢迎消息).

所以,我的问题是,为什么端口映射不能按预期工作?或者这不是端口映射相关,不知何故来自容器的响应没有通过?

正如您所看到的,所有内容都正确连接并且ReactPHP中的Web服务器在内部工作,但它无法在外部访问/正常工作?

如果我使用像apache / nginx这样的东西,我对端口映射没有任何问题.有任何想法吗?附:对不起,很长的帖子;试图在人们逐一要求之前提供所有细节.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值