繁体   English   中英

Laravel Sail 容器突然无法访问

[英]Laravel Sail container suddenly unreachable

几天前,我的航行环境工作得很好。 现在不是。 目前我正在使用 Laravel 从我们的遗留系统中重构一堆 api。 所以它的工作方式是我们的遗留系统使用 Guzzle 向 Laravel 发出一个 http 请求,Laravel 进行处理然后返回。 我注意到在我的本地机器上我不再能够访问我的 laravel 项目。 我收到连接被拒绝的错误。 我还注意到我也无法通过我的 chrome 浏览器访问应用程序,我得到ERR_EMPTY_RESPONSE ,但是,如果我登录到同一网络上的任何其他容器并尝试 ping 我的 laravel 容器,它就可以正常工作。 我还想指出,我在同一个 docker -compose.yml中有一个rabbitmq服务,我可以在我的浏览器中点击它的 ui 部分。

这是一个在 Mac 和 Windows 上都使用的共享项目。 它运行的一台mac机器很好。 我的 Windows 机器是唯一遇到此问题的机器。 下面是sails up -d的输出图像

扬帆起航 -d 输出

laravel.test 错误??? 这是以前从未出现过的。 还要注意 DockerFile 如何在CACHED命令上运行。 不确定这是否是一个问题,但它在从头开始构建时从未这样做过。

当前配置:

  • 视窗 10
  • Docker 桌面 4.8.2
  • PHP 8.1
  • WSL2

我尝试过的事情(愚蠢与否)

  • 重启我的机器
  • php_flag opcache.enable Off添加到我的.htaccess
  • memory_limit = 1024M添加到我的php.ini
  • 指向不同的 DockerFile
  • 更改端口
  • 擦除所有关联图像并从头开始重建

码头工人-compose.yml:

version: '3'
services:
    laravel.test:
        build:
            context: ./docker_config/sail/runtimes/8.1
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.1/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
            - default
        depends_on:
            - rabbitmq3
    rabbitmq3:
        container_name: "rabbitmq"
        image: rabbitmq:3-management
        environment:
            - RABBITMQ_DEFAULT_USER=guest
            - RABBITMQ_DEFAULT_PASS=guest
        volumes:
            - ./docker_config/rabbitmq_init/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
            - ./docker_config/rabbitmq_init/definitions.json:/etc/rabbitmq/definitions.json:ro
        ports:
            # AMQP protocol port
            - '5672:5672'
            # HTTP management UI
            - '15672:15672'
networks:
    default:
        external: true
        name: localdevstructure_default
    sail:
        driver: bridge

Docker文件:

FROM ubuntu:21.10

LABEL maintainer="Taylor Otwell"

ARG WWWGROUP
ARG NODE_VERSION=16

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update \
    && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
    && mkdir -p ~/.gnupg \
    && chmod 600 ~/.gnupg \
    && echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
    && apt-key adv --homedir ~/.gnupg --keyserver hkps://keyserver.ubuntu.com --recv-keys 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C \
    && echo "deb https://ppa.launchpadcontent.net/ondrej/php/ubuntu impish main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
    && apt-get update \
    && apt-get install -y php8.1-cli php8.1-dev \
       php8.1-pgsql php8.1-sqlite3 php8.1-gd \
       php8.1-curl \
       php8.1-imap php8.1-mysql php8.1-mbstring \
       php8.1-xml php8.1-zip php8.1-bcmath php8.1-soap \
       php8.1-intl php8.1-readline \
       php8.1-ldap \
       php8.1-msgpack php8.1-igbinary php8.1-redis php8.1-swoole \
       php8.1-memcached php8.1-pcov php8.1-xdebug \
    && php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
    && curl -sL https://deb.nodesource.com/setup_$NODE_VERSION.x | bash - \
    && apt-get install -y nodejs \
    && npm install -g npm \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
    && echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
    && apt-get update \
    && apt-get install -y yarn \
    && apt-get install -y mysql-client \
    && apt-get install -y postgresql-client \
    && apt-get install -y vim \
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.1

RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail

COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY highPriority-worker.conf /etc/supervisor/conf.d/highPriority-worker.conf
COPY lowPriority-worker.conf /etc/supervisor/conf.d/lowPriority-worker.conf
COPY php.ini /etc/php/8.1/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container

EXPOSE 8000

ENTRYPOINT ["start-container"]

编辑:

我不断遇到的唯一错误是:

“来自守护进程的错误响应:获取“https://sail-8.1/v2/”:无法查找主机:sail-8.1”

我相信这与提供的服务 laravel.test 图像中显示的错误有关。 发生的事情是服务进入“拉动”阶段,并在一秒钟内出错。 所以这让我相信在图像创建过程中发生了一些事情

所以我弄清楚发生了什么,这对我来说真的很愚蠢。 我认为天生的主管并没有设置为在本地开发环境中自动启动,但是在使用sai 时它是。 在从本地复制到容器的 supervisord.conf 文件中,有一个程序可以运行 artisan serve 命令。 长话短说,我评论了这一点,认为没有必要。 没有意识到sai帆正在使用主管来保持该命令的运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM