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