Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Docker |构建在交互式Shell上退出_Php_Docker_Docker Compose_Dockerfile - Fatal编程技术网

Php Docker |构建在交互式Shell上退出

Php Docker |构建在交互式Shell上退出,php,docker,docker-compose,dockerfile,Php,Docker,Docker Compose,Dockerfile,我正在尝试使用php7.3-alpineimage运行一个版本的Swoole 运行时,所有内容都正确构建,所有扩展都正确安装。但是,在执行docker compose-up时,我陷入了interactiveshell中,然后带着代码0退出,因此容器实际上无法正确启动 我能做些什么来阻止这个问题,阻止它运行交互式shell吗 FROM composer:latest as builder WORKDIR /app RUN composer global require hirak/presti

我正在尝试使用
php7.3-alpine
image运行一个版本的
Swoole

运行时,所有内容都正确构建,所有扩展都正确安装。但是,在执行
docker compose-up
时,我陷入了
interactiveshell
中,然后带着代码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

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

交互式Shell之所以存在,是因为
php:7.3-alpine
的原始
CMD
,它是
php-a
,提供:

Interactive shell

php > 

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

Hi我这样做了,并且做了
CMD[“php”,“artisan”,“swoole:http”,“start”]
但我也遇到了同样的问题。exist状态仍然是
0
?您也检查了此容器的docker日志吗?当我放入该容器时,退出代码是1,因为服务仍在运行,尽管我遇到了交互式shell问题,但已将其删除。我已更新了关于exist code 0的答案。添加自己的
CMD
时,需要检查错误日志。如果docker映像生成时没有问题,则需要提供docker-compose.yml文件以调试添加的docker-compose.yml