我正在尝试使用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
答案 0 :(得分:1)
您需要在dockerfile末尾的最后一个阶段定义一个CMD
,该阶段将用作运行它的容器的起点。您可以检查以下URL
之所以有交互式外壳,是因为CMD
的原始php:7.3-alpine
是php -a
,它给出了:
Interactive shell
php >
您需要定义自己的CMD以启动您的应用程序,并检查日志是否无效