try to implement the global containerization
This commit is contained in:
1 parent
e2b471312c
commit
ed38086d09
24 files changed
+966
No files matched your search
Executable
+14
@@ -0,0 +1,14 @@
|
||||
FROM alpine:latest
|
||||
|
||||
RUN apk add --no-cache mariadb-client bash dcron
|
||||
|
||||
RUN mkdir -p /backups
|
||||
RUN mkdir -p /etc/periodic/daily
|
||||
|
||||
COPY backup_db.sh /etc/periodic/daily/backup_db
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
RUN chmod +x /etc/periodic/daily/backup_db
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
BACKUP_DIR="/backups"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
DAY=$(date +%d)
|
||||
FILE="$BACKUP_DIR/$DAY.sql"
|
||||
|
||||
mysqldump -h mariadb -u "$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" > "$FILE" 2>/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "[$(date)] Backup $DB_DATABASE sauvegardé dans $FILE" >> "$BACKUP_DIR/backup.log"
|
||||
else
|
||||
echo "[$(date)] ERREUR lors du backup de $DB_DATABASE" >> "$BACKUP_DIR/backup.log"
|
||||
fi
|
||||
Executable
+2
@@ -0,0 +1,2 @@
|
||||
#!/bin/sh
|
||||
crond -f -l 2
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
FROM node:20-alpine
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN apk add --no-cache git bash
|
||||
|
||||
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
COPY scripts/wait-for-it.sh /usr/local/bin/wait-for-it.sh
|
||||
|
||||
RUN chmod +x /usr/local/bin/entrypoint.sh \
|
||||
/usr/local/bin/wait-for-it.sh
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
CMD ["build"]
|
||||
Executable
+38
@@ -0,0 +1,38 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
FRONTEND_DIR=/app
|
||||
APP_DIR=/var/www/app
|
||||
PUBLIC_DIR="$APP_DIR/public"
|
||||
GIT_URL="https://oauth2:${GIT_TOKEN}@${FRONTEND_GIT_REPO}"
|
||||
PHP_HOST="app-php"
|
||||
PHP_PORT=9000
|
||||
|
||||
/usr/local/bin/wait-for-it.sh "$PHP_HOST:$PHP_PORT" -t 300
|
||||
|
||||
if [ ! -d "$FRONTEND_DIR/.git" ]; then
|
||||
git clone -b "${FRONTEND_GIT_BRANCH:-main}" "$GIT_URL" "$FRONTEND_DIR"
|
||||
else
|
||||
cd "$FRONTEND_DIR"
|
||||
git fetch origin
|
||||
git reset --hard origin/"${FRONTEND_GIT_BRANCH:-main}"
|
||||
fi
|
||||
|
||||
cp "$APP_DIR/public/index.php" "$FRONTEND_DIR/index.php"
|
||||
|
||||
cd "$FRONTEND_DIR"
|
||||
npm ci --prefer-offline --no-audit
|
||||
npm run build
|
||||
|
||||
find "$PUBLIC_DIR" -mindepth 1 \
|
||||
! -name 'index.php' \
|
||||
! -name '.htaccess' \
|
||||
! -name 'storage' \
|
||||
-delete
|
||||
|
||||
cp -r dist/* "$PUBLIC_DIR/"
|
||||
|
||||
if [ ! -L "$PUBLIC_DIR/storage" ] || [ ! -e "$PUBLIC_DIR/storage" ]; then
|
||||
ln -sfn "$APP_DIR/storage/app/public" "$PUBLIC_DIR/storage"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
Executable
+182
@@ -0,0 +1,182 @@
|
||||
#!/usr/bin/env bash
|
||||
# Use this script to test if a given TCP host/port are available
|
||||
|
||||
WAITFORIT_cmdname=${0##*/}
|
||||
|
||||
echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
|
||||
|
||||
usage()
|
||||
{
|
||||
cat << USAGE >&2
|
||||
Usage:
|
||||
$WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
|
||||
-h HOST | --host=HOST Host or IP under test
|
||||
-p PORT | --port=PORT TCP port under test
|
||||
Alternatively, you specify the host and port as host:port
|
||||
-s | --strict Only execute subcommand if the test succeeds
|
||||
-q | --quiet Don't output any status messages
|
||||
-t TIMEOUT | --timeout=TIMEOUT
|
||||
Timeout in seconds, zero for no timeout
|
||||
-- COMMAND ARGS Execute command with args after the test finishes
|
||||
USAGE
|
||||
exit 1
|
||||
}
|
||||
|
||||
wait_for()
|
||||
{
|
||||
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
|
||||
echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
|
||||
else
|
||||
echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
|
||||
fi
|
||||
WAITFORIT_start_ts=$(date +%s)
|
||||
while :
|
||||
do
|
||||
if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
|
||||
nc -z $WAITFORIT_HOST $WAITFORIT_PORT
|
||||
WAITFORIT_result=$?
|
||||
else
|
||||
(echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
|
||||
WAITFORIT_result=$?
|
||||
fi
|
||||
if [[ $WAITFORIT_result -eq 0 ]]; then
|
||||
WAITFORIT_end_ts=$(date +%s)
|
||||
echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
return $WAITFORIT_result
|
||||
}
|
||||
|
||||
wait_for_wrapper()
|
||||
{
|
||||
# In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
|
||||
if [[ $WAITFORIT_QUIET -eq 1 ]]; then
|
||||
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
|
||||
else
|
||||
timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
|
||||
fi
|
||||
WAITFORIT_PID=$!
|
||||
trap "kill -INT -$WAITFORIT_PID" INT
|
||||
wait $WAITFORIT_PID
|
||||
WAITFORIT_RESULT=$?
|
||||
if [[ $WAITFORIT_RESULT -ne 0 ]]; then
|
||||
echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
|
||||
fi
|
||||
return $WAITFORIT_RESULT
|
||||
}
|
||||
|
||||
# process arguments
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "$1" in
|
||||
*:* )
|
||||
WAITFORIT_hostport=(${1//:/ })
|
||||
WAITFORIT_HOST=${WAITFORIT_hostport[0]}
|
||||
WAITFORIT_PORT=${WAITFORIT_hostport[1]}
|
||||
shift 1
|
||||
;;
|
||||
--child)
|
||||
WAITFORIT_CHILD=1
|
||||
shift 1
|
||||
;;
|
||||
-q | --quiet)
|
||||
WAITFORIT_QUIET=1
|
||||
shift 1
|
||||
;;
|
||||
-s | --strict)
|
||||
WAITFORIT_STRICT=1
|
||||
shift 1
|
||||
;;
|
||||
-h)
|
||||
WAITFORIT_HOST="$2"
|
||||
if [[ $WAITFORIT_HOST == "" ]]; then break; fi
|
||||
shift 2
|
||||
;;
|
||||
--host=*)
|
||||
WAITFORIT_HOST="${1#*=}"
|
||||
shift 1
|
||||
;;
|
||||
-p)
|
||||
WAITFORIT_PORT="$2"
|
||||
if [[ $WAITFORIT_PORT == "" ]]; then break; fi
|
||||
shift 2
|
||||
;;
|
||||
--port=*)
|
||||
WAITFORIT_PORT="${1#*=}"
|
||||
shift 1
|
||||
;;
|
||||
-t)
|
||||
WAITFORIT_TIMEOUT="$2"
|
||||
if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
|
||||
shift 2
|
||||
;;
|
||||
--timeout=*)
|
||||
WAITFORIT_TIMEOUT="${1#*=}"
|
||||
shift 1
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
WAITFORIT_CLI=("$@")
|
||||
break
|
||||
;;
|
||||
--help)
|
||||
usage
|
||||
;;
|
||||
*)
|
||||
echoerr "Unknown argument: $1"
|
||||
usage
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
|
||||
echoerr "Error: you need to provide a host and port to test."
|
||||
usage
|
||||
fi
|
||||
|
||||
WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
|
||||
WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
|
||||
WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
|
||||
WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
|
||||
|
||||
# Check to see if timeout is from busybox?
|
||||
WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
|
||||
WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
|
||||
|
||||
WAITFORIT_BUSYTIMEFLAG=""
|
||||
if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
|
||||
WAITFORIT_ISBUSY=1
|
||||
# Check if busybox timeout uses -t flag
|
||||
# (recent Alpine versions don't support -t anymore)
|
||||
if timeout &>/dev/stdout | grep -q -e '-t '; then
|
||||
WAITFORIT_BUSYTIMEFLAG="-t"
|
||||
fi
|
||||
else
|
||||
WAITFORIT_ISBUSY=0
|
||||
fi
|
||||
|
||||
if [[ $WAITFORIT_CHILD -gt 0 ]]; then
|
||||
wait_for
|
||||
WAITFORIT_RESULT=$?
|
||||
exit $WAITFORIT_RESULT
|
||||
else
|
||||
if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
|
||||
wait_for_wrapper
|
||||
WAITFORIT_RESULT=$?
|
||||
else
|
||||
wait_for
|
||||
WAITFORIT_RESULT=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ $WAITFORIT_CLI != "" ]]; then
|
||||
if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
|
||||
echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
|
||||
exit $WAITFORIT_RESULT
|
||||
fi
|
||||
exec "${WAITFORIT_CLI[@]}"
|
||||
else
|
||||
exit $WAITFORIT_RESULT
|
||||
fi
|
||||
Executable
+28
@@ -0,0 +1,28 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name 127.0.0.1;
|
||||
|
||||
root /var/www/app/public;
|
||||
index index.php index.html;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
include fastcgi_params;
|
||||
fastcgi_pass php:9000;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||
fastcgi_param SERVER_NAME 127.0.0.1;
|
||||
fastcgi_param HTTPS off;
|
||||
}
|
||||
|
||||
location /app/ {
|
||||
proxy_pass http://reverb:8080;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
}
|
||||
}
|
||||
Executable
+81
@@ -0,0 +1,81 @@
|
||||
APP_NAME=Laravel
|
||||
APP_ENV=local
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost:8000
|
||||
|
||||
CORS_PATHS=api/*,sanctum/csrf-cookie,broadcasting/auth
|
||||
DEV_CORS_ALLOWED_ORIGINS=http://localhost:5173
|
||||
PROD_CORS_ALLOWED_ORIGINS=http://localhost
|
||||
SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,localhost:8000,localhost:5173
|
||||
|
||||
ADMIN_NAME=
|
||||
ADMIN_LASTNAME=
|
||||
ADMIN_MAIL=
|
||||
ADMIN_PASSWORD=
|
||||
ADMIN_PHONE_NUMBER=
|
||||
|
||||
APP_LOCALE=en
|
||||
APP_FALLBACK_LOCALE=en
|
||||
APP_FAKER_LOCALE=en_US
|
||||
|
||||
APP_MAINTENANCE_DRIVER=file
|
||||
# APP_MAINTENANCE_STORE=database
|
||||
|
||||
PHP_CLI_SERVER_WORKERS=4
|
||||
|
||||
BCRYPT_ROUNDS=12
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
LOG_STACK=single
|
||||
LOG_DEPRECATIONS_CHANNEL=null
|
||||
LOG_LEVEL=debug
|
||||
|
||||
SESSION_DRIVER=database
|
||||
SESSION_LIFETIME=120
|
||||
SESSION_ENCRYPT=false
|
||||
SESSION_PATH=/
|
||||
SESSION_DOMAIN=localhost
|
||||
SESSION_SECURE_COOKIE=false
|
||||
|
||||
BROADCAST_CONNECTION=reverb
|
||||
REVERB_APP_ID=local
|
||||
REVERB_APP_KEY=local
|
||||
REVERB_APP_SECRET=local
|
||||
REVERB_HOST=reverb
|
||||
REVERB_PORT=8080
|
||||
REVERB_SCHEME=http
|
||||
PUSHER_APP_CLUSTER="mt1"
|
||||
|
||||
CACHE_STORE=file
|
||||
QUEUE_CONNECTION=sync
|
||||
|
||||
FILESYSTEM_DISK=local
|
||||
# CACHE_PREFIX=
|
||||
|
||||
MEMCACHED_HOST=127.0.0.1
|
||||
|
||||
REDIS_CLIENT=phpredis
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_SCHEME=null
|
||||
MAIL_HOST=host.docker.internal
|
||||
MAIL_PORT=1025
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_FROM_ADDRESS="hello@example.com"
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
|
||||
AWS_ACCESS_KEY_ID=
|
||||
AWS_SECRET_ACCESS_KEY=
|
||||
AWS_DEFAULT_REGION=us-east-1
|
||||
AWS_BUCKET=
|
||||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
VITE_APP_NAME="${APP_NAME}"
|
||||
|
||||
TYPESENSE_CONNECTION=typesense
|
||||
TYPESENSE_API_KEY=
|
||||
Executable
+27
@@ -0,0 +1,27 @@
|
||||
FROM php:8.4-fpm
|
||||
|
||||
ARG USER_ID=1000
|
||||
ARG GROUP_ID=1000
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git unzip libzip-dev libpng-dev libonig-dev gosu \
|
||||
&& apt-get install -y netcat-openbsd \
|
||||
&& docker-php-ext-install pdo_mysql zip pcntl
|
||||
|
||||
RUN if [ ${USER_ID:-0} -ne 0 ] && [ ${GROUP_ID:-0} -ne 0 ]; then \
|
||||
groupmod -g ${GROUP_ID} www-data && \
|
||||
usermod -u ${USER_ID} -g ${GROUP_ID} www-data \
|
||||
;fi
|
||||
|
||||
|
||||
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
||||
|
||||
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
|
||||
COPY scripts/*.sh /usr/local/bin/
|
||||
|
||||
RUN chmod +x /usr/local/bin/*.sh
|
||||
|
||||
WORKDIR /var/www/app
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||
CMD ["php-fpm"]
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
. /usr/local/bin/context.sh
|
||||
. /usr/local/bin/setup_git.sh
|
||||
. /usr/local/bin/setup_composer.sh
|
||||
. /usr/local/bin/setup_env.sh
|
||||
. /usr/local/bin/setup_laravel.sh
|
||||
|
||||
echo "[INIT] Starting initialization..."
|
||||
|
||||
setup_git
|
||||
setup_composer
|
||||
setup_env
|
||||
|
||||
/usr/local/bin/wait-mariadb.sh
|
||||
/usr/local/bin/wait-typesense.sh
|
||||
|
||||
setup_laravel
|
||||
|
||||
echo "[INIT] Done ✅"
|
||||
|
||||
exec "$@"
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
APP_DIR=/var/www/app
|
||||
IS_DEV=${DEV:-0}
|
||||
|
||||
run() {
|
||||
if [ "$IS_DEV" = 1 ]; then
|
||||
gosu www-data "$@"
|
||||
else
|
||||
"$@"
|
||||
fi
|
||||
}
|
||||
Executable
+12
@@ -0,0 +1,12 @@
|
||||
#!/bin/sh
|
||||
|
||||
setup_composer() {
|
||||
echo "Installing dependencies..."
|
||||
|
||||
mkdir -p /var/www/.composer/cache
|
||||
chown -R www-data:www-data /var/www/.composer
|
||||
|
||||
if [ -f composer.json ]; then
|
||||
run composer install --no-interaction --prefer-dist
|
||||
fi
|
||||
}
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
setup_env() {
|
||||
echo "Configuring environment..."
|
||||
|
||||
cp /tmp/app.env .env
|
||||
|
||||
/usr/local/bin/wait-typesense.sh
|
||||
|
||||
TYPESENSE_API_KEY=$(cat /typesense-data/api-key)
|
||||
sed -i "s/^TYPESENSE_API_KEY=.*/TYPESENSE_API_KEY=$TYPESENSE_API_KEY/" .env
|
||||
echo "DEV=$DEV" >> .env
|
||||
|
||||
if [ "$IS_DEV" = 1 ]; then
|
||||
chown www-data:www-data .env
|
||||
chmod 664 .env
|
||||
else
|
||||
chown www-data:www-data .env
|
||||
chmod 640 .env
|
||||
fi
|
||||
}
|
||||
Executable
+36
@@ -0,0 +1,36 @@
|
||||
#!/bin/sh
|
||||
|
||||
setup_git() {
|
||||
echo "Setting up Git..."
|
||||
|
||||
GIT_URL="https://oauth2:${GIT_TOKEN}@${BACKEND_GIT_REPO}"
|
||||
BRANCH="${BACKEND_GIT_BRANCH:-main}"
|
||||
FORCE_CLONE="${FORCE_CLONE:-false}"
|
||||
|
||||
git config --global --add safe.directory "$APP_DIR"
|
||||
|
||||
if [ ! -d "$APP_DIR/.git" ]; then
|
||||
echo "Cloning repo..."
|
||||
git clone -b "$BRANCH" "$GIT_URL" "$APP_DIR"
|
||||
else
|
||||
echo "Updating repo..."
|
||||
cd "$APP_DIR"
|
||||
CURRENT_BRANCH=$(run git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
if [ "$CURRENT_BRANCH" = "$BRANCH" ]; then
|
||||
run git fetch origin
|
||||
run git reset --hard origin/"$CURRENT_BRANCH"
|
||||
else
|
||||
if [ "$FORCE_CLONE" = "true" ]; then
|
||||
rm -rf "$APP_DIR"
|
||||
mkdir -p "$APP_DIR"
|
||||
git clone -b "$BRANCH" "$GIT_URL" "$APP_DIR"
|
||||
else
|
||||
run git fetch origin
|
||||
run git reset --hard origin/"$BRANCH"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "$APP_DIR"
|
||||
}
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
setup_laravel() {
|
||||
echo "Setting up Laravel..."
|
||||
|
||||
run php artisan key:generate --force
|
||||
run php artisan config:clear
|
||||
run php artisan cache:clear
|
||||
run php artisan migrate --force --seed
|
||||
|
||||
if [ "$IS_DEV" = 1 ]; then
|
||||
chmod -R 775 storage bootstrap/cache
|
||||
chmod -R 755 public
|
||||
else
|
||||
chown -R www-data:www-data storage bootstrap/cache
|
||||
chmod -R 775 storage bootstrap/cache
|
||||
fi
|
||||
|
||||
run php artisan storage:link
|
||||
}
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
until nc -z mariadb 3306; do
|
||||
sleep 2
|
||||
done
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
while [ ! -f /typesense-data/api-key ]; do
|
||||
sleep 1
|
||||
done
|
||||
Executable
+24
@@ -0,0 +1,24 @@
|
||||
FROM php:8.4-fpm
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
git \
|
||||
unzip \
|
||||
libzip-dev \
|
||||
libpng-dev \
|
||||
libonig-dev \
|
||||
libxml2-dev \
|
||||
&& docker-php-ext-install \
|
||||
pdo \
|
||||
pdo_mysql \
|
||||
mbstring \
|
||||
xml \
|
||||
pcntl \
|
||||
sockets \
|
||||
zip \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
|
||||
|
||||
WORKDIR /var/www/app
|
||||
|
||||
EXPOSE 8080
|
||||
Executable
+6
@@ -0,0 +1,6 @@
|
||||
FROM typesense/typesense:29.0
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
Executable
+16
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
DATA_DIR="/data"
|
||||
KEY_FILE="$DATA_DIR/api-key"
|
||||
|
||||
if [ ! -f "$KEY_FILE" ]; then
|
||||
tr -dc A-Za-z0-9 </dev/urandom | head -c 32 > "$KEY_FILE"
|
||||
fi
|
||||
|
||||
API_KEY=$(cat "$KEY_FILE")
|
||||
|
||||
exec /opt/typesense-server \
|
||||
--data-dir "$DATA_DIR" \
|
||||
--api-key "$API_KEY" \
|
||||
--enable-cors
|
||||
Reference in new issue
Block a user