Докер |Сборка выходит из интерактивной оболочки - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь запустить версию Swoole с php7.3-alpine образом.

При запуске все работает правильно и все расширения устанавливаются правильно.Однако, когда дело доходит до docker-compose up, я застреваю в Interactive shell, а затем завершаю работу с кодом 0, так что контейнер на самом деле не загружается правильно.

Есть ли что-нибудь, что я могу сделать, чтобы остановить эту проблемуи остановить его запуск интерактивной оболочки?

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

output

web_1       | Interactive shell
web_1       |
web_1 exited with code 0

1 Ответ

0 голосов
/ 01 марта 2019

Вам нужно определить CMD в конце вашего dockerfile последнего этапа, который будет использоваться в качестве отправной точки для контейнера, в котором вы его запустите.Вы можете проверить следующее URL

Интерактивная оболочка существует из-за оригинального CMD из php:7.3-alpine, который php -a, который дает:

Interactive shell

php > 

Вам нужно определить собственную CMD, которая запускает ваше приложение, и проверить журналы, если оно не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...