Docker 不暴露端口

Docker doesnt expose Port

我有这个 docker-compose 文件:

    version: '2'
services:
    web:
        build: .
        container_name: Fila
        ports:
            - 8000:8000
            - 9000:9000

还有这个 docker 文件:

 FROM phpdockerio/php73-fpm:latest

WORKDIR /var/www


COPY . /var/www/atendimento

WORKDIR /var/www/atendimento

RUN composer install

RUN mv .env.example .env

#RUN node index.js &

RUN php artisan key:generate 

CMD [ "php", "artisan", "serve"  ] 

运行"docker-compose up"后执行无误,

当我尝试在导航器上访问主机中的 localhost:8000 时,我得到 "the connection has been reset"

在 docker 中,我用 "wget localhost:8000" 进行了测试并获得了正确的站点。 但在主机中没有。

有人可以帮助我吗?

您需要使用 --host 标志在 aritsan 命令中将主机绑定到 0.0.0.0。

CMD [ "php", "artisan", "serve", "--host", "0.0.0.0"]

为什么不起作用?

不设置host,art​​isan会将服务器绑定到容器localhost。容器本地主机和您的机器本地主机不同。

设置 0.0.0.0 会将服务器绑定到所有接口,包括使它在 localhost:8000 可用的主机接口。

我认为你的 Dockerfile 应该添加 EXPOSE
让我们在 Dockerfile 中添加以下一行:
EXPOSE 8000 9000