dockerfiles/release.Dockerfile
Rama main · réplica de lectura del repositorio original.
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
# Install system dependencies
RUN apt-get update -y && \
apt-get install -y --no-install-recommends \
curl \
git \
python3 \
nano \
gcc \
wget \
gosu \
build-essential \
ca-certificates \
gnupg \
nginx \
openssl \
unzip \
mariadb-client \
netcat-openbsd \
supervisor \
libcap2-bin \
libpng-dev \
dnsutils \
librsvg2-bin \
fswatch \
apt-transport-https \
fontconfig \
libxrender1 \
xfonts-75dpi \
xfonts-base \
libfontenc1 x11-common xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Install wkhtmltopdf 0.12.6.1 (patched Qt) - architecture-aware
RUN ARCH=$(dpkg --print-architecture) && \
curl -sSL -o /tmp/wkhtmltox.deb "https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-2/wkhtmltox_0.12.6.1-2.jammy_${ARCH}.deb" && \
dpkg -i /tmp/wkhtmltox.deb && \
apt-get update -y && \
apt-get install -y -f && \
dpkg -i /tmp/wkhtmltox.deb &&\
rm /tmp/wkhtmltox.deb && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Install Node.js 22.x and PHP 8.4
RUN mkdir -p /etc/apt/keyrings && \
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key \
| gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" \
> /etc/apt/sources.list.d/nodesource.list && \
curl -fsSL -o /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb && \
dpkg -i /tmp/debsuryorg-archive-keyring.deb && \
rm /tmp/debsuryorg-archive-keyring.deb && \
echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ noble main" \
> /etc/apt/sources.list.d/php.list && \
apt-get update -y && \
apt-get install -y --no-install-recommends \
php8.4-cli php8.4-dev php8.4-fpm \
php8.4-pgsql php8.4-sqlite3 php8.4-gd php8.4-imagick \
php8.4-curl \
php8.4-imap php8.4-mysql php8.4-mbstring \
php8.4-xml php8.4-zip php8.4-bcmath php8.4-soap \
php8.4-intl php8.4-readline \
php8.4-ldap \
php8.4-msgpack php8.4-igbinary php8.4-redis php8.4-swoole \
php8.4-memcached php8.4-pcov \
nodejs \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/www/html && \
mkdir -p /var/log/supervisor
WORKDIR /var/www/html
# Copy entrypoint script first (from meta repo)
COPY dockerfiles/entrypoint.sh /usr/local/bin/entrypoint.sh
RUN chmod +x /usr/local/bin/entrypoint.sh
COPY dockerfiles/php.ini /etc/php/8.4/fpm/conf.d/99-custom.ini
COPY dockerfiles/nginx.conf /etc/nginx/nginx.conf
# Copy only the artwork application (not the meta repository files)
COPY --chown=www-data:www-data . /var/www/html/
# Ensure composer is available (dependencies are installed at container start via entrypoint)
RUN if ! command -v composer &>/dev/null; then \
curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer; \
fi
# Configure nginx
RUN cp -rf dockerfiles/artwork-php.84.vhost.conf /etc/nginx/sites-available/default
# Set permissions on writable directories only
RUN chmod -R 755 /var/www/html/storage /var/www/html/bootstrap/cache
EXPOSE 80
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["sh", "-c", "php-fpm8.4 -F & nginx -g 'daemon off;'"]