码头工人|构建版本将在Interactive Shell上退出

时间:2019-03-01 17:20:45

标签: php docker docker-compose dockerfile

我正在尝试使用Swoole图片运行php7.3-alpine版本。

运行时,所有内容均正确构建,并且所有扩展都正确安装。但是,在进行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

1 个答案:

答案 0 :(得分:1)

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

之所以有交互式外壳,是因为CMD的原始php:7.3-alpinephp -a,它给出了:

Interactive shell

php > 

您需要定义自己的CMD以启动您的应用程序,并检查日志是否无效