You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.8 KiB
95 lines
2.8 KiB
FROM composer:latest AS vendor
|
|
|
|
FROM php:8.2-cli-bookworm AS base
|
|
ARG TZ=PRC
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
TERM=xterm-color \
|
|
OCTANE_SERVER=roadrunner \
|
|
ROOT=/var/www \
|
|
COMPOSER_FUND=0 \
|
|
COMPOSER_MAX_PARALLEL_HTTP=24
|
|
|
|
WORKDIR ${ROOT}
|
|
|
|
SHELL ["/bin/bash", "-eou", "pipefail", "-c"]
|
|
|
|
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \
|
|
&& echo ${TZ} > /etc/timezone
|
|
|
|
################################################################################################
|
|
## 安装依赖
|
|
################################################################################################
|
|
ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
|
|
RUN apt-get update; \
|
|
apt-get upgrade -yqq; \
|
|
apt-get install -yqq --no-install-recommends --show-progress \
|
|
apt-utils \
|
|
curl \
|
|
wget \
|
|
nano \
|
|
ncdu \
|
|
ca-certificates \
|
|
supervisor \
|
|
libsodium-dev \
|
|
# Install PHP extensions
|
|
&& install-php-extensions \
|
|
bz2 \
|
|
pcntl \
|
|
mbstring \
|
|
bcmath \
|
|
sockets \
|
|
pgsql \
|
|
pdo_pgsql \
|
|
opcache \
|
|
exif \
|
|
pdo_mysql \
|
|
zip \
|
|
intl \
|
|
gd \
|
|
redis \
|
|
rdkafka \
|
|
memcached \
|
|
igbinary \
|
|
ldap \
|
|
&& apt-get -y autoremove \
|
|
&& apt-get clean \
|
|
&& docker-php-source delete \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
|
|
&& rm /var/log/lastlog /var/log/faillog
|
|
|
|
|
|
################################################################################################
|
|
## 复制代码文件和部署文件
|
|
################################################################################################
|
|
COPY . .
|
|
COPY deployment/supervisord.*.conf /etc/supervisor/conf.d/
|
|
COPY deployment/php.ini ${PHP_INI_DIR}/conf.d/99-octane.ini
|
|
COPY deployment/start-container /usr/local/bin/start-container
|
|
|
|
################################################################################################
|
|
## 安装依赖
|
|
################################################################################################
|
|
COPY --from=vendor /usr/bin/composer /usr/bin/composer
|
|
RUN touch database/database.sqlite
|
|
RUN composer install \
|
|
--no-dev \
|
|
--no-interaction \
|
|
--no-ansi
|
|
RUN if composer show | grep spiral/roadrunner-cli >/dev/null; then \
|
|
./vendor/bin/rr get-binary; else \
|
|
echo "`spiral/roadrunner-cli` package is not installed. Exiting..."; exit 1; \
|
|
fi
|
|
|
|
################################################################################################
|
|
## 权限目录设置
|
|
################################################################################################
|
|
RUN chmod +x rr /usr/local/bin/start-container
|
|
RUN mkdir -p \
|
|
storage/framework/{sessions,views,cache,testing} \
|
|
storage/logs \
|
|
bootstrap/cache && chmod -R a+rw storage
|
|
|
|
ENTRYPOINT ["start-container"]
|
|
|
|
HEALTHCHECK --start-period=5s --interval=2s --timeout=5s --retries=8 CMD php artisan octane:status || exit 1
|