【问题标题】:Docker | Build getting exiting on Interactive Shell码头工人 |在 Interactive Shell 上构建退出
【发布时间】:2019-03-01 17:20:44
【问题描述】:

我正在尝试运行带有php7.3-alpine 图像的Swoole 版本。

运行时,一切都会正确构建,并且所有扩展都会正确安装。但是,在执行 docker-compose up 时,我会卡在 Interactive shell 中,然后以代码 0 退出,因此容器实际上无法正确启动。

我能做些什么来阻止这个问题并阻止它运行交互式 shell?

FROM composer:latest as builder

WORKDIR /app

RUN composer global require hirak/prestissimo

COPY . /app/

RUN composer install \
        --no-ansi \
        --no-dev \
        --no-interaction \
        --no-progress \
        --optimize-autoloader \
        --ignore-platform-reqs

RUN rm -rf docker/ composer.json composer.lock && \
    touch /app/storage/logs/lumen.log

FROM php:7.3-alpine

ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS=0 \
    PHP_OPCACHE_MAX_ACCELERATED_FILES=7963 \
    PHP_OPCACHE_MEMORY_CONSUMPTION=192

RUN set -ex \
    && apk update \
    && apk add --no-cache libffi-dev icu libsodium \
    && apk add --no-cache --virtual build-dependencies icu-dev g++ make autoconf libsodium-dev \
    && docker-php-source extract \
    && pecl install swoole redis sodium \
    && docker-php-ext-enable redis swoole sodium \
    && docker-php-source delete \
    && docker-php-ext-install -j$(nproc) pdo_mysql intl \
    && cd  / && rm -fr /src \
    && apk del build-dependencies \
    && rm -rf /tmp/*

COPY --from=builder --chown=www-data:www-data /app /var/www

COPY docker/php.ini /usr/local/etc/php/php.ini

USER www-data

WORKDIR /var/www

EXPOSE 1215

docker-compose.yml

  web:
    build:
      context: .
      dockerfile: docker/Dockerfile
    ports:
      - "80:1215"
    env_file:
      - .env

输出

web_1       | Interactive shell
web_1       |
web_1 exited with code 0

【问题讨论】:

  • 如果 docker 镜像构建没有问题,您需要提供 docker-compose.yml 文件以便进一步调试
  • 添加了 docker-compose.yml

标签: php docker docker-compose dockerfile


【解决方案1】:

您需要在 dockerfile 的末尾定义一个CMD,最后一个阶段将用作您将运行它的容器的起点。您可以查看以下URL

Interactive Shell 之所以存在,是因为 php:7.3-alpine 的原始 CMDphp -a,它给出:

Interactive shell

php > 

您需要定义自己的 CMD 来启动您的应用程序并检查日志(如果它不工作)

【讨论】:

  • 您好,我做了这个并且做了CMD ["php", "artisan","swoole:http","start"],但我遇到了同样的问题。
  • 存在状态还是0 ?
  • 你也检查过这个容器的 docker 日志吗?
  • 退出代码为 1,因为服务仍在运行,但我得到了交互式 shell 问题。
  • 我已经更新了关于存在代码0的答案。您需要在添加自己的CMD时检查错误日志
猜你喜欢
  • 2020-12-18
  • 1970-01-01
  • 2016-07-27
  • 2023-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2016-01-18
  • 1970-01-01
相关资源
最近更新 更多