Ctrl K
ComunidadGuías…

dockerfiles/release.Dockerfile

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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;'"]