Docker and CICD
This commit is contained in:
+48
@@ -0,0 +1,48 @@
|
|||||||
|
APP_NAME="PerceptronViewer"
|
||||||
|
APP_ENV=production
|
||||||
|
APP_KEY=base64:WE5DlJGDeIrl+B1ZqahVJSg4TN6oY3N1ph8CDKNo0w4=
|
||||||
|
APP_DEBUG=false
|
||||||
|
APP_URL=https://perceptron.matthiasg.dev
|
||||||
|
|
||||||
|
APP_LOCALE=fr
|
||||||
|
APP_FALLBACK_LOCALE=fr
|
||||||
|
APP_FAKER_LOCALE=fr_FR
|
||||||
|
|
||||||
|
APP_MAINTENANCE_DRIVER=file
|
||||||
|
# APP_MAINTENANCE_STORE=database
|
||||||
|
|
||||||
|
LOG_CHANNEL=single
|
||||||
|
LOG_STACK=single
|
||||||
|
LOG_DEPRECATIONS_CHANNEL=null
|
||||||
|
LOG_LEVEL=debug
|
||||||
|
|
||||||
|
SESSION_DRIVER=database
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
SESSION_ENCRYPT=false
|
||||||
|
SESSION_PATH=/
|
||||||
|
|
||||||
|
BROADCAST_CONNECTION=reverb
|
||||||
|
FILESYSTEM_DISK=local
|
||||||
|
QUEUE_CONNECTION=database
|
||||||
|
|
||||||
|
CACHE_STORE=database
|
||||||
|
# CACHE_PREFIX=
|
||||||
|
|
||||||
|
MEMCACHED_HOST=memcached
|
||||||
|
|
||||||
|
VITE_APP_NAME="${APP_NAME}"
|
||||||
|
|
||||||
|
REVERB_SERVER_HOST=0.0.0.0
|
||||||
|
REVERB_SERVER_PORT=8080
|
||||||
|
REVERB_APP_ID=848245
|
||||||
|
REVERB_APP_KEY=hkybzbkdvdl1hsvtzuqk
|
||||||
|
REVERB_APP_SECRET=oosuq0v9jgaslzp9cmhv
|
||||||
|
REVERB_HOST="perceptron.matthiasg.dev"
|
||||||
|
REVERB_PORT=443
|
||||||
|
REVERB_SCHEME=https
|
||||||
|
REVERB_MAX_REQUEST_SIZE=100000
|
||||||
|
|
||||||
|
VITE_REVERB_APP_KEY="${REVERB_APP_KEY}"
|
||||||
|
VITE_REVERB_HOST="${REVERB_HOST}"
|
||||||
|
VITE_REVERB_PORT="${REVERB_PORT}"
|
||||||
|
VITE_REVERB_SCHEME="${REVERB_SCHEME}"
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
name: Build and Push Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ["tests"]
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Get version
|
||||||
|
id: get_version
|
||||||
|
run: echo "::set-output name=version::$(cat VERSION)"
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: git.matthiasg.dev/Ninluc/perceptron-viewer/perceptron-viewer:latest, git.matthiasg.dev/Ninluc/perceptron-viewer/perceptron-viewer:${{ steps.get_version.outputs.version }}
|
||||||
|
|
||||||
|
# notify:
|
||||||
|
# needs: build
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
# steps:
|
||||||
|
# - name: Notify Watchtower
|
||||||
|
# run: "curl -i -X POST -H \"Authorization: Bearer ${{ secrets.WATCHTOWER_TOKEN }}\" https://watchtower.beermaker.matthiasg.dev/v1/update"
|
||||||
+57
@@ -0,0 +1,57 @@
|
|||||||
|
# Composer dependencies
|
||||||
|
FROM composer:2 AS vendor
|
||||||
|
|
||||||
|
WORKDIR /usr/app
|
||||||
|
COPY . .
|
||||||
|
RUN composer install --no-dev --optimize-autoloader --no-interaction
|
||||||
|
|
||||||
|
# Build frontend assets
|
||||||
|
# Install node and npm
|
||||||
|
RUN apk add --no-cache nodejs npm
|
||||||
|
RUN npm install
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
# Final PHP image
|
||||||
|
FROM dunglas/frankenphp:1.12.2-php8.3-alpine AS final
|
||||||
|
|
||||||
|
# Install system dependencies
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
bash \
|
||||||
|
libpng-dev \
|
||||||
|
libjpeg-turbo-dev \
|
||||||
|
freetype-dev \
|
||||||
|
oniguruma-dev \
|
||||||
|
zip \
|
||||||
|
unzip \
|
||||||
|
git \
|
||||||
|
curl \
|
||||||
|
libpq-dev \
|
||||||
|
php-pgsql
|
||||||
|
|
||||||
|
# Install PHP extensions
|
||||||
|
RUN docker-php-ext-install pdo pgsql pdo_pgsql mbstring exif pcntl bcmath gd
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Copy app
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN mv .env.docker .env
|
||||||
|
|
||||||
|
# Copy dependencies
|
||||||
|
COPY --from=vendor /usr/app/vendor ./vendor
|
||||||
|
|
||||||
|
# Copy built frontend
|
||||||
|
COPY --from=vendor /usr/app/public/build ./public/build
|
||||||
|
|
||||||
|
# Permissions
|
||||||
|
#RUN chown -R www-data:www-data /app
|
||||||
|
#RUN chown www-data:www-data /app/dockerEntryPoint.sh
|
||||||
|
RUN chmod +x /app/dockerEntryPoint.sh
|
||||||
|
|
||||||
|
HEALTHCHECK --interval=30s --timeout=30s --start-period=30s --retries=3 CMD curl -f http://127.0.0.1/up || exit 1
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
EXPOSE 8080
|
||||||
|
|
||||||
|
CMD ["./dockerEntryPoint.sh"]
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Cache
|
||||||
|
php ./artisan optimize:clear && php ./artisan optimize
|
||||||
|
|
||||||
|
# Start the server
|
||||||
|
exec frankenphp php-server --root=public
|
||||||
Reference in New Issue
Block a user