Random_examples.md


Laravel with https

FROM php:7.4-fpm

# Add docker php extension installer script
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

# Install Composer
RUN chmod +x /usr/local/bin/install-php-extensions \
    && install-php-extensions @composer \
    calendar \
    exif \
    ffi \
    gd \
    gettext \
    imagick \
    imap \
    intl \
    mysqli \
    pcntl \
    pdo \
    pdo_mysql \
    rdkafka \
    redis \
    shmop \
    soap \
    sockets \
    sysvmsg \
    sysvsem \
    sysvshm \
    xmlrpc \
    xsl \
    zip \
    mongodb

WORKDIR /var/www/html
ENTRYPOINT php-fpm -D && php artisan serve --host 0.0.0.0

docker-compose.yml

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 8090:8000
    volumes:
      - .:/var/www/html
    tty: true
    networks:
      - cdp
  nginx:
    image: nginx
    ports:
      - 7774:443
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - .:/var/www/html
    networks:
      - cdp
networks:
    cdp:
        driver: bridge

nginx.conf

  server {
    listen      80;
    listen 443 ssl;

    ssl_certificate /var/www/html/XXX.crt;
    ssl_certificate_key /var/www/html/XXX.key;

    root /var/www/html/public;

    location / {
      index index.php;
      try_files $uri $uri/ /index.php?$args;
    }

    rewrite ^(.*)/index.html$ $1 permanent;

    location ~ \.php$ {
        try_files $uri index.php =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_read_timeout 300;
        client_body_buffer_size     20M;
        client_max_body_size        20M;
        fastcgi_max_temp_file_size 0;
        include fastcgi_params;
    }

    location ~* \.(jpg|jpeg|png|gif|svg|ico|css|js)$ {
        expires epoch;
    }
  }

Specify Debian and php 8.2

FROM debian:stable-slim

RUN apt-get update && \
    apt-get install -y wget gnupg2 && \
    wget -qO - https://packages.sury.org/php/apt.gpg | apt-key add - && \
    dpkg -l | grep php | tee packages.txt && \
    apt install apt-transport-https lsb-release ca-certificates wget -y && \
    wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg && \
    sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' && \
    apt update && \
    apt install -y php8.2 php8.2-cli \
      php8.2-fpm \
      php8.2-cli \
      php8.2-dev \
      php8.2-sqlite3 \
      php8.2-gd \
      php8.2-curl \
      php8.2-imap \
      php8.2-mysql \
      php8.2-mbstring \
      php8.2-xml  \
      php8.2-zip  \
      php8.2-bcmath \
      php8.2-intl  \
      php8.2-readline \
      php8.2-ldap \
      php8.2-msgpack  \
      php8.2-igbinary  \
      php8.2-redis \
      php8.2-memcached \
      php8.2-pcov \
      php8.2-xdebug \
      php8.2-mongodb

RUN php -r "readfile('https://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer