Skip to content
Snippets Groups Projects
Commit 310b8bf9 authored by i.vasilenko@iq-adv.ru's avatar i.vasilenko@iq-adv.ru
Browse files

init

parent c46b33ac
No related branches found
No related tags found
1 merge request!1init docker
Showing
with 4600 additions and 0 deletions
{
"symfony/console": {
"version": "7.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "5.3",
"ref": "1781ff40d8a17d87cf53f8d4cf0c8346ed2bb461"
},
"files": [
"bin/console"
]
},
"symfony/flex": {
"version": "2.4",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.0",
"ref": "146251ae39e06a95be0fe3d13c807bcf3938b172"
},
"files": [
".env"
]
},
"symfony/framework-bundle": {
"version": "7.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "7.0",
"ref": "6356c19b9ae08e7763e4ba2d9ae63043efc75db5"
},
"files": [
"config/packages/cache.yaml",
"config/packages/framework.yaml",
"config/preload.php",
"config/routes/framework.yaml",
"config/services.yaml",
"public/index.php",
"src/Controller/.gitignore",
"src/Kernel.php"
]
},
"symfony/maker-bundle": {
"version": "1.59",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.0",
"ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f"
}
},
"symfony/routing": {
"version": "7.0",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "7.0",
"ref": "21b72649d5622d8f7da329ffb5afb232a023619d"
},
"files": [
"config/packages/routing.yaml",
"config/routes.yaml"
]
}
}
services:
app:
container_name: ${CONTAINER_NAME}-app
build:
context: ./
dockerfile: ./docker/app/Dockerfile
target: app
args:
COMPOSER_AUTH: "{}"
APP_BASE_DIR: ${APP_BASE_DIR-.}
depends_on:
db:
condition: service_healthy
restart: unless-stopped
extra_hosts:
- "host.docker.internal:host-gateway"
web:
container_name: ${CONTAINER_NAME}-web
build:
context: ./
dockerfile: ./docker/web/Dockerfile
target: web
args:
APP_BASE_DIR: ${APP_BASE_DIR-.}
restart: unless-stopped
ports:
- ${HTTP_PORT}:8080
environment:
PHP_FPM_HOST: app
depends_on:
app:
condition: service_healthy
db:
container_name: ${CONTAINER_NAME}-db
image: postgres:16-alpine3.18
environment:
USER_ID: ${USER_ID}
GROUP_ID: ${GROUP_ID}
PGDATA: /data/postgres
PGUSER: ${DB_ROOT_USERNAME}
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- sqldata:/data/postgres
restart: unless-stopped
healthcheck:
test: [ "CMD-SHELL", "pg_isready", "-d" ]
timeout: 5s
retries: 3
volumes:
sqldata:
services:
app:
container_name: ${CONTAINER_NAME}-app
build:
context: ./
dockerfile: ./docker/app/Dockerfile
target: app-dev
args:
COMPOSER_AUTH: "{}"
APP_BASE_DIR: ${APP_BASE_DIR-.}
depends_on:
db:
condition: service_healthy
environment:
XDEBUG_IDE_KEY: ${XDEBUG_IDE_KEY}
restart: unless-stopped
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ${APP_BASE_DIR-.}:/app
web:
container_name: ${CONTAINER_NAME}-web
build:
context: ./
dockerfile: ./docker/web/Dockerfile
args:
APP_BASE_DIR: ${APP_BASE_DIR-.}
restart: unless-stopped
ports:
- ${HTTP_PORT}:8080
environment:
PHP_FPM_HOST: app
volumes:
- ${APP_BASE_DIR-.}/public:/app/public
depends_on:
app:
condition: service_healthy
db:
container_name: ${CONTAINER_NAME}-db
image: postgres:16-alpine3.18
environment:
USER_ID: ${USER_ID}
GROUP_ID: ${GROUP_ID}
PGDATA: /data/postgres
PGUSER: ${DB_ROOT_USERNAME}
POSTGRES_DB: ${DB_DATABASE}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- sqldata:/data/postgres
ports:
- ${DB_PORT}:5432
restart: unless-stopped
healthcheck:
test: [ "CMD-SHELL", "pg_isready", "-d" ]
timeout: 5s
retries: 3
volumes:
sqldata:
# ---------------------------------------------- Build Time Arguments --------------------------------------------------
ARG PHP_VERSION="8.3.6"
ARG PHP_ALPINE_VERSION="3.18"
ARG COMPOSER_VERSION="2.7.4"
ARG XDEBUG_VERSION="3.3.2"
ARG COMPOSER_AUTH
ARG APP_BASE_DIR="."
# -------------------------------------------------- Composer Image ----------------------------------------------------
FROM composer:${COMPOSER_VERSION} as composer
# ======================================================================================================================
# --- Base ---
# --------------- This stage install needed extenstions, plugins and add all needed configurations -------------------
# ======================================================================================================================
FROM php:${PHP_VERSION}-fpm-alpine${PHP_ALPINE_VERSION} AS base
# Required Args ( inherited from start of file, or passed at build )
ARG XDEBUG_VERSION
# Set SHELL flags for RUN commands to allow -e and pipefail
# Rationale: https://github.com/hadolint/hadolint/wiki/DL4006
SHELL ["/bin/ash", "-eo", "pipefail", "-c"]
# ------------------------------------- Install Packages Needed Inside Base Image --------------------------------------
RUN echo -e "https://nl.alpinelinux.org/alpine/v3.18/main/\nhttps://nl.alpinelinux.org/alpine/v3.18/community/" > /etc/apk/repositories
RUN tail /etc/apk/repositories
RUN RUNTIME_DEPS="tini fcgi tzdata"; \
SECURITY_UPGRADES="curl"; \
apk add --no-cache --upgrade ${RUNTIME_DEPS} ${SECURITY_UPGRADES}
# ---------------------------------------- Install / Enable PHP Extensions ---------------------------------------------
RUN apk add --no-cache --virtual .build-deps \
$PHPIZE_DEPS \
g++ \
autoconf \
linux-headers \
make \
libzip-dev \
icu-dev \
postgresql-dev \
# PHP Extensions --------------------------------- \
&& curl -sSLf \
-o /usr/local/bin/install-php-extensions \
https://github.com/mlocati/docker-php-extension-installer/releases/download/2.1.54/install-php-extensions \
&& chmod +x /usr/local/bin/install-php-extensions \
&& install-php-extensions gd \
&& docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install -j$(nproc) \
intl \
opcache \
zip \
pdo_pgsql \
# Pecl Extensions --------------------------------- \
&& pecl install apcu && docker-php-ext-enable apcu \
# --------------------------------------------------\
# Install Xdebug at this step to make editing dev image cache-friendly, we delete xdebug from production image later \
&& pecl install xdebug-${XDEBUG_VERSION} \
# Cleanup ----------------------------------------------------------------------------------------------------------- \
&& rm -r /tmp/pear; \
# - Detect Runtime Dependencies of the installed extensions. \
# - src: https://github.com/docker-library/wordpress/blob/master/latest/php8.2/fpm-alpine/Dockerfile \
out="$(php -r 'exit(0);')"; \
[ -z "$out" ]; err="$(php -r 'exit(0);' 3>&1 1>&2 2>&3)"; \
[ -z "$err" ]; extDir="$(php -r 'echo ini_get("extension_dir");')"; \
[ -d "$extDir" ]; \
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive "$extDir" \
| tr ',' '\n' | sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
# Save Runtime Deps in a virtual deps
apk add --no-cache --no-network --virtual .php-extensions-rundeps $runDeps; \
# Uninstall Everything we Installed (minus the runtime Deps)
apk del --no-network .build-deps; \
\
! { ldd "$extDir"/*.so | grep 'not found'; }; \
# check for output like "PHP Warning: PHP Startup: Unable to load dynamic library 'foo' (tried: ...)
err="$(php --version 3>&1 1>&2 2>&3)"; [ -z "$err" ]
# -------------------------------------------------------------------------------------------------------------------- \
# ------------------------------------------------- Permissions --------------------------------------------------------
# - Clean bundled config/users & recreate them with UID 1000 for docker compatability in dev container.
# - Create composer directories (since we run as non-root later)
# - Add Default Config
RUN deluser --remove-home www-data && adduser -u1000 -D www-data && rm -rf /var/www /usr/local/etc/php-fpm.d/* && \
mkdir -p /var/www/.composer /app && chown -R www-data:www-data /app /var/www/.composer; \
# ------------------------------------------------ PHP Configuration ---------------------------------------------------
mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Add in Base PHP Config
COPY docker/app/php/base-* $PHP_INI_DIR/conf.d
# ---------------------------------------------- PHP FPM Configuration -------------------------------------------------
# PHP-FPM config
COPY docker/app/fpm/*.conf /usr/local/etc/php-fpm.d/
# --------------------------------------------------- Scripts ----------------------------------------------------------
COPY docker/app/entrypoint/*-base docker/app/post-build/*-base docker/app/pre-run/*-base \
docker/app/fpm/healthcheck-fpm \
docker/app/scripts/command-loop* \
# to
/usr/local/bin/
RUN chmod +x /usr/local/bin/*-base /usr/local/bin/healthcheck-fpm /usr/local/bin/command-loop*
# ---------------------------------------------------- Composer --------------------------------------------------------
COPY --from=composer /usr/bin/composer /usr/bin/composer
# ----------------------------------------------------- MISC -----------------------------------------------------------
WORKDIR /app
USER www-data
# Common PHP Frameworks Env Variables
ENV APP_ENV prod
ENV APP_DEBUG 0
ENV TZ=Europe/Moscow
# Validate FPM config (must use the non-root user)
RUN php-fpm -t
# ---------------------------------------------------- HEALTH ----------------------------------------------------------
HEALTHCHECK CMD ["healthcheck-fpm"]
# -------------------------------------------------- ENTRYPOINT --------------------------------------------------------
ENTRYPOINT ["entrypoint-base"]
CMD ["php-fpm"]
# ======================================================================================================================
# --- Vendor ---
# --------------- This stage will install composer runtime dependinces and install app dependinces. ------------------
# ======================================================================================================================
FROM composer as vendor
ARG PHP_VERSION
ARG COMPOSER_AUTH
ARG APP_BASE_DIR
# A Json Object with remote repository token to clone private Repos with composer
# Reference: https://getcomposer.org/doc/03-cli.md#composer-auth
ENV COMPOSER_AUTH $COMPOSER_AUTH
WORKDIR /app
# Copy Dependencies files
COPY $APP_BASE_DIR/composer.json composer.json
COPY $APP_BASE_DIR/composer.lock composer.lock
# Set PHP Version of the Image
RUN composer config platform.php ${PHP_VERSION}; \
# Install Dependencies
composer install -n --no-progress --ignore-platform-reqs --no-dev --prefer-dist --no-scripts --no-autoloader
# ======================================================================================================================
# ============================================== PRODUCTION IMAGE ====================================================
# --- PROD ---
# ======================================================================================================================
FROM base AS app
ARG APP_BASE_DIR
USER root
# Copy PHP Production Configuration
COPY docker/app/php/prod-* $PHP_INI_DIR/conf.d/
# Copy Prod Scripts && delete xdebug
COPY docker/app/entrypoint/*-prod docker/app/post-build/*-prod docker/app/pre-run/*-prod \
# to
/usr/local/bin/
RUN chmod +x /usr/local/bin/*-prod && pecl uninstall xdebug
USER www-data
# ----------------------------------------------- Production Config -----------------------------------------------------
# Copy Vendor
COPY --chown=www-data:www-data --from=vendor /app/vendor /app/vendor
# Copy App Code
COPY --chown=www-data:www-data $APP_BASE_DIR/ .
## Run Composer Install again
## ( this time to run post-install scripts, autoloader, and post-autoload scripts using one command )
RUN composer install --optimize-autoloader --apcu-autoloader --no-dev -n --no-progress && \
composer check-platform-reqs && \
post-build-base && post-build-prod
ENTRYPOINT ["entrypoint-prod"]
CMD ["php-fpm"]
# ======================================================================================================================
# ============================================== DEVELOPMENT IMAGE ===================================================
# --- DEV ---
# ======================================================================================================================
FROM base as app-dev
ENV APP_ENV dev
ENV APP_DEBUG 1
# Switch root to install stuff
USER root
# For Composer Installs
RUN apk --no-cache add git openssh bash; \
# Enable Xdebug
docker-php-ext-enable xdebug
ARG XDEBUG_IDE_KEY
ENV XDEBUG_CLIENT_HOST="host.docker.internal"
ENV XDEBUG_IDE_KEY=$XDEBUG_IDE_KEY
# ---------------------------------------------------- Scripts ---------------------------------------------------------
# Copy Dev Scripts
COPY docker/app/php/dev-* $PHP_INI_DIR/conf.d/
COPY docker/app/entrypoint/*-dev docker/app/post-build/*-dev docker/app/pre-run/*-dev \
# to
/usr/local/bin/
RUN chmod +x /usr/local/bin/*-dev; \
mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
USER www-data
# ------------------------------------------------- Entry Point --------------------------------------------------------
# Entrypoints
ENTRYPOINT ["entrypoint-dev"]
CMD ["php-fpm"]
#!/bin/sh
set -eu
# ----------------------------------------------------------------------------------------------------------------------
echo "► Starting Main Entrypoint..."
# --------------------------------------------------------------------------------------------------------------------
# Run custom ad-hoc pre-run script
echo "► Running custom pre-run (base) script..."
pre-run-base
# ----------------------------------------------------------------------------------------------------------------------
# Run Dockerfile's CMD (default: $> php-fpm )
echo "► Starting... cmd: ${@}"
exec tini -- "${@}"
#!/bin/sh
set -eu
# ----------------------------------------------------------------------------------------------------------------------
echo "► Starting Development Entrypoint..."
# ----------------------------------------------------------------------------------------------------------------------
echo "► Running 'post-build-base && post-build-dev' script(s)..."
post-build-base && post-build-dev
# Run custom ad-hoc pre-run script
echo "► Running custom pre-run (dev) script..."
pre-run-dev
# Run Entrypoint and pass CMD to it (Don't forget exec)
exec entrypoint-base "${@}"
#!/bin/sh
set -eu
# ----------------------------------------------------------------------------------------------------------------------
echo "► Starting Production Entrypoint..."
# ----------------------------------------------------------------------------------------------------------------------
# Run custom ad-hoc pre-run script
echo "► Running custom pre-run (prod) script..."
pre-run-prod
# ----------------------------------------------------------------------------------------------------------------------
# Run Entrypoint and pass CMD to it (Don't forget exec)
exec entrypoint-base "${@}"
[global]
daemonize = no
log_limit = 65536
error_log = /dev/stderr
emergency_restart_threshold = 10
emergency_restart_interval = 1m
log_level = warning
; Timeout after receiving termination signal, to serve in-process requests.
process_control_timeout = 10s
[www]
; use TCP socket.
listen = 9000
pm = dynamic
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 2
pm.max_children = 50
; do not clear environment variables sent to the PHP Script, pass OS env vars to PHP. (Important for K8S)
clear_env = no
; Disable access logs in fpm's stdout/err as it will be in nginx access logs.
;access.log = /dev/stderr
; Run as www-data
; user = www-data
; group = www-data
; For Healthcheck
ping.path = /ping
pm.status_path = /status
; Ensure worker stdout and stderr are sent to the main error log.
; do not
php_admin_flag[log_errors] = on
php_admin_flag[fastcgi.logging] = off
catch_workers_output = yes
decorate_workers_output = no
\ No newline at end of file
#!/bin/sh
# vim: set filetype=sh :
# Author: <Renato Mefi gh@mefi.in> https://github.com/renatomefi
# The original code lives in https://github.com/renatomefi/php-fpm-healthcheck
#
# A POSIX compliant shell script to healthcheck PHP fpm status, can be used only for pinging the status page
# or check for specific metrics
#
# i.e.: ./php-fpm-healthcheck --verbose --active-processes=6
# The script will fail in case the 'active processes' is bigger than 6.
#
# You can combine multiple options as well, the first one to fail will fail the healthcheck
# i.e.: ./php-fpm-healthcheck --listen-queue-len=10 --active-processes=6
#
# Ping mode (exit 0 if php-fpm returned data): ./php-fpm-healthcheck
#
# Ping mode with data (outputs php-fpm status text): ./php-fpm-healthcheck -v
#
# Exit status codes:
# 2,9,111 - Couldn't connect to PHP fpm, is it running?
# 8 - Couldn't reach PHP fpm status page, have you configured it with `pm.status_path = /status`?
# 1 - A healthcheck condition has failed
# 3 - Invalid option given
# 4 - One or more required softwares are missing
#
# Available options:
# -v|--verbose
#
# Metric options, fails in case the CURRENT VALUE is bigger than the GIVEN VALUE
# --accepted-conn=n
# --listen-queue=n
# --max-listen-queue=n
# --idle-processes=n
# --active-processes=n
# --total-processes=n
# --max-active-processes=n
# --max-children-reached=n
# --slow-requests=n
#
set -eu
OPTIND=1 # Reset getopt in case it has been used previously in the shell
# FastCGI variables
export REQUEST_METHOD="GET"
export SCRIPT_NAME="/status"
export SCRIPT_FILENAME="/status"
FCGI_CONNECT_DEFAULT="localhost:9000"
# Required software
FCGI_CMD_PATH=$(command -v cgi-fcgi) || { >&2 echo "Make sure fcgi is installed (i.e. apk add --no-cache fcgi). Aborting."; exit 4; }
command -v sed 1> /dev/null || { >&2 echo "Make sure sed is installed (i.e. apk add --no-cache busybox). Aborting."; exit 4; }
command -v tail 1> /dev/null || { >&2 echo "Make sure tail is installed (i.e. apk add --no-cache busybox). Aborting."; exit 4; }
command -v grep 1> /dev/null || { >&2 echo "Make sure grep is installed (i.e. apk add --no-cache grep). Aborting."; exit 4; }
# Get status from fastcgi connection
# $1 - cgi-fcgi connect argument
get_fpm_status() {
if test "$VERBOSE" = 1; then printf "Trying to connect to php-fpm via: %s\\n" "$1"; fi;
# Since I cannot use pipefail I'll just split these in two commands
FPM_STATUS=$(env -i REQUEST_METHOD="$REQUEST_METHOD" SCRIPT_NAME="$SCRIPT_NAME" SCRIPT_FILENAME="$SCRIPT_FILENAME" "$FCGI_CMD_PATH" -bind -connect "$1" 2> /dev/null)
FPM_STATUS=$(echo "$FPM_STATUS" | tail +5)
if test "$VERBOSE" = 1; then printf "php-fpm status output:\\n%s\\n" "$FPM_STATUS"; fi;
if test "$FPM_STATUS" = "File not found."; then
>&2 printf "php-fpm status page non reachable\\n";
exit 8;
fi;
}
# $1 - fpm option
# $2 - expected value threshold
check_fpm_health_by() {
OPTION=$(echo "$1" | sed 's/--//g; s/-/ /g;')
VALUE_EXPECTED="$2";
VALUE_ACTUAL=$(echo "$FPM_STATUS" | grep "^$OPTION:" | cut -d: -f2 | sed 's/ //g')
if test "$VERBOSE" = 1; then printf "'%s' value '%s' and expected is less than '%s'\\n" "$OPTION" "$VALUE_ACTUAL" "$VALUE_EXPECTED"; fi;
if test "$VALUE_ACTUAL" -gt "$VALUE_EXPECTED"; then
>&2 printf "'%s' value '%s' is greater than expected '%s'\\n" "$OPTION" "$VALUE_ACTUAL" "$VALUE_EXPECTED";
exit 1;
fi;
}
PARAM_AMOUNT=0
# $1 - fpm option
# $2 - expected value threshold
check_later() {
# The POSIX sh way to check if it's an integer, also the output is supressed since it's polution
if ! test "$2" -eq "$2" 2> /dev/null; then
>&2 printf "'%s' option value must be an integer, '%s' given\\n" "$1" "$2"; exit 3;
fi
PARAM_AMOUNT=$(( PARAM_AMOUNT + 1 ))
eval "PARAM_TO_CHECK$PARAM_AMOUNT=$1"
eval "VALUE_TO_CHECK$PARAM_AMOUNT=$2"
}
# From the PARAM_TO_CHECK/VALUE_TO_CHECK magic variables, do all the checks
check_fpm_health() {
j=1
while [ $j -le $PARAM_AMOUNT ]; do
eval "CURRENT_PARAM=\$PARAM_TO_CHECK$j"
eval "CURRENT_VALUE=\$VALUE_TO_CHECK$j"
check_fpm_health_by "$CURRENT_PARAM" "$CURRENT_VALUE"
j=$(( j + 1 ))
done
}
if ! GETOPT=$(getopt -o v --long verbose,accepted-conn:,listen-queue:,max-listen-queue:,listen-queue-len:,idle-processes:,active-processes:,total-processes:,max-active-processes:,max-children-reached:,slow-requests: -n 'php-fpm-healthcheck' -- "$@"); then
>&2 echo "Invalid options, terminating." ; exit 3
fi;
eval set -- "$GETOPT"
FCGI_CONNECT="${FCGI_CONNECT:-$FCGI_CONNECT_DEFAULT}"
VERBOSE=0
while test "$1"; do
case "$1" in
-v|--verbose ) VERBOSE=1; shift ;;
--) shift ; break ;;
* ) check_later "$1" "$2"; shift 2 ;;
esac
done
FPM_STATUS=false
get_fpm_status "$FCGI_CONNECT"
check_fpm_health
# -----------------------------------------------------------
#
#
# PHP CONFIG TO OVERRIDE BASE CONFIG
# ---> for base config check the .dist file
#
#
# -----------------------------------------------------------
apc.enable_cli = 1
apc.enable=1
date.timezone = UTC
session.auto_start = Off
short_open_tag = Off
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 20000
opcache.memory_consumption = 256
realpath_cache_size = 4096K
realpath_cache_ttl = 600
# Set unlimited max len for log errors
log_errors_max_len = 0
# Do not expose php version in response header
expose_php = off
\ No newline at end of file
# -----------------------------------------------------------
#
#
# PHP CONFIG TO OVERRIDE DEV CONFIG
# for base config check the .dist file
#
#
# -----------------------------------------------------------
#display_errors = Off
#date.timezone = UTC
\ No newline at end of file
# Xdebug Config passed in Development Image
[Xdebug]
error_reporting=E_ALL
display_startup_errors=On
display_errors=On
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.discover_client_host=0
xdebug.output_dir="/app/"
xdebug.client_port=9000
# for mac use host.docker.internal
# for linux use 172.17.0.1
xdebug.client_host=${XDEBUG_CLIENT_HOST}
xdebug.idekey=${XDEBUG_IDE_KEY}
xdebug.show_error_trace=1
xdebug.log_level=0
\ No newline at end of file
# -----------------------------------------------------------
#
#
# PHP CONFIG TO OVERRIDE BASE CONFIG
# ---> for base config check the .dist file
#
#
# -----------------------------------------------------------
opcache.validate_timestamps=0
opcache.consistency_checks=0
This diff is collapsed.
This diff is collapsed.
#!/bin/sh
set -eu
# Put Custom Ad-hoc scripts after build. Like framework specific checks, etc.
#!/bin/sh
set -eu
# Put Custom Ad-hoc scripts after build. Like framework specific checks, etc.
# Install Public Assets if they're not generated.
echo "► Running Composer Install..."
composer install
echo "► Checking Platform Requirements"
composer check-platform-reqs
\ No newline at end of file
#!/bin/sh
set -eu
# Put Custom Ad-hoc scripts after build. Like framework specific checks, etc.
\ No newline at end of file
#!/bin/sh
set -e
# Load .env and .env.<APP_ENV>, and .env.<APP_ENV>.local into script (won't overwrite OS env vars.)
#set -a
# env_overwrite="./.env.${APP_ENV-prod}"
# env_local_overwrite="./.env.${APP_ENV-prod}.local"
# export -p >> /tmp/envsrc && if [ -f "./.env" ]; then . ./.env; fi && if [ -f "${env_overwrite}" ]; then . $env_overwrite; fi && if [ -f "${env_local_overwrite}" ]; then . $env_local_overwrite; fi && . /tmp/envsrc \
# && rm /tmp/envsrc && unset env_overwrite && unset env_local_overwrite
#set +a
# This script working dir is application's directory, and all ENV variables from .env and OS are available here
# using ${ENV_NAME} with defaults taken from .env and .env.<env>
#
# Ex:
# { echo ${DATABASE_URL}; echo "stdin input"; } | vendor/bin/<script that need stdin input>
# Put Custom Ad-hoc scripts below:
\ No newline at end of file
#!/bin/sh
set -e
# Load .env and .env.<APP_ENV>, and .env.<APP_ENV>.local into script (won't overwrite OS env vars.)
#set -a
# env_overwrite="./.env.${APP_ENV-prod}"
# env_local_overwrite="./.env.${APP_ENV-prod}.local"
# export -p >> /tmp/envsrc && if [ -f "./.env" ]; then . ./.env; fi && if [ -f "${env_overwrite}" ]; then . $env_overwrite; fi && if [ -f "${env_local_overwrite}" ]; then . $env_local_overwrite; fi && . /tmp/envsrc \
# && rm /tmp/envsrc && unset env_overwrite && unset env_local_overwrite
#set +a
# This script working dir is application's directory, and all ENV variables from .env and OS are available here
# using ${ENV_NAME} with defaults taken from .env and .env.<env>
#
# Ex:
# { echo ${DATABASE_URL}; echo "stdin input"; } | vendor/bin/<script that need stdin input>
# Put Custom Ad-hoc scripts below:
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment