update for CICD

This commit is contained in:
Vincent BRIDIER 2023-08-21 12:58:38 +02:00
parent 5c1fa2273c
commit e9a4c43e28
No known key found for this signature in database
GPG key ID: 8571BFA20420D512
4 changed files with 115 additions and 44 deletions

2
.dockerignore Normal file
View file

@ -0,0 +1,2 @@
.git
*.md

View file

@ -1,4 +1,5 @@
FROM registry.s-web.fr/ldc-web/projets/ldc-web-images-docker/ldcweb-production-7.3:latest
COPY . /app/srcs
COPY ./public/build /app/srcs/public/build
COPY ./vendor /app/srcs/vendor
COPY --chown=www-data:www-data . /app/srcs
USER root
RUN chmod -R 755 /app/srcs/storage
USER www-data

View file

@ -113,6 +113,23 @@ return [
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
'stdout' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'formatter' => env('LOG_STDOUT_FORMATTER'),
'with' => [
'stream' => 'php://stdout',
],
],
'k8s' => [
'driver' => 'stack',
'channels' => ['daily', 'stdout'],
'ignore_exceptions' => false,
],
],
];

View file

@ -4,39 +4,32 @@ kind: ConfigMap
metadata:
name: ${CI_PROJECT_PATH_SLUG}-config-map
data:
APP_NAME: "poc-oe-wdmr"
APP_ENV: "dev"
APP_KEY: "base64:Juxmv7LhkCAkxyhw/8J4dPdnTZbVJkyvRG8jIMxqBZA="
APP_DEBUG: "true"
APP_URL: ""
ASSET_URL: "storage/"
LOG_CHANNEL: "stack"
LOG_DEPRECATIONS_CHANNEL: "null"
LOG_LEVEL: "debug"
DB_CONNECTION: "mysql"
APP_NAME: "${APP_APP_NAME}"
APP_ENV: "${APP_APP_ENV}"
APP_KEY: "${APP_APP_KEY}"
APP_DEBUG: "${APP_APP_DEBUG}"
APP_URL: "https://www.${APP_DOMAIN}"
LOG_CHANNEL: "k8s"
DB_HOST: "mariadb-service.common-services"
DB_PORT: "3306"
DB_DATABASE: "poc-oe-wdmr"
DB_USERNAME: "poc-oe-wdmr"
DB_PASSWORD: "poc-oe-wdmr"
BROADCAST_DRIVER: "log"
CACHE_DRIVER: "file"
FILESYSTEM_DISK: "local"
QUEUE_CONNECTION: "sync"
SESSION_DRIVER: "file"
SESSION_LIFETIME: "120"
MAIL_MAILER: "smtp"
MAIL_HOST: ""
MAIL_PORT: ""
MAIL_USERNAME: ""
MAIL_PASSWORD: ""
MAIL_ENCRYPTION: "null"
MAIL_FROM_ADDRESS: ""
MAIL_FROM_NAME: "poc-oe-wdmr"
LDC_STATUS_CHECKER_API_KEY: "MY_KEY"
LDC_STATUS_CHECKER_UUID: "UUID_PROJECT"
LDC_WEB_API_KEY: "MY_KEY"
GOOGLE_MAPS_KEY: ""
DB_DATABASE: "${APP_DB_DATABASE}"
DB_USERNAME: "${APP_DB_USERNAME}"
DB_PASSWORD: "${APP_DB_PASSWORD}"
MAIL_HOST: "${APP_MAIL_HOST}"
MAIL_PORT: "${APP_MAIL_PORT}"
MAIL_USERNAME: "${APP_MAIL_USERNAME}"
MAIL_PASSWORD: "${APP_MAIL_PASSWORD}"
MAIL_ENCRYPTION: "${APP_MAIL_ENCRYPTION}"
MAIL_FROM_ADDRESS: "${APP_MAIL_FROM_ADDRESS}"
MAIL_FROM_NAME: "${APP_APP_NAME}"
MAIL_LIST_CONTACTFORM: "${APP_MAIL_LIST_CONTACTFORM}"
LDC_STATUS_CHECKER_API_KEY: "${APP_LDC_WEB_API_KEY}"
LDC_STATUS_CHECKER_UUID: "${APP_LDC_STATUS_CHECKER_UUID}"
LDC_WEB_API_KEY: "${APP_LDC_WEB_API_KEY}"
GOOGLE_RECAPTCHA_PRIVATE: "${APP_GOOGLE_RECAPTCHA_PRIVATE}"
GOOGLE_RECAPTCHA_PUBLIC: "${APP_GOOGLE_RECAPTCHA_PUBLIC}"
GOOGLE_RECAPTCHA_VERSION: "${APP_GOOGLE_RECAPTCHA_VERSION}"
SENTRY_LARAVEL_DSN: "${APP_SENTRY_LARAVEL_DSN}"
MATOMO_SITE_ID: "${APP_MATOMO_SITE_ID}"
---
apiVersion: v1
@ -49,7 +42,7 @@ spec:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storage: $APP_PVC_SIZE
---
apiVersion: apps/v1
@ -74,9 +67,14 @@ spec:
name: ${CI_PROJECT_PATH_SLUG}-config-map
volumeMounts:
- name: storage
mountPath: /app/srcs/storage/app/public
mountPath: /app/srcs/storage
imagePullSecrets:
- name: docker-registry-credentials
securityContext:
runAsUser: 33
runAsGroup: 33
fsGroup: 33
fsGroupChangePolicy: "OnRootMismatch"
volumes:
- name: storage
persistentVolumeClaim:
@ -93,7 +91,7 @@ spec:
app: ${CI_PROJECT_PATH_SLUG}-app
ports:
- port: 80
targetPort: 8080
targetPort: 443
---
apiVersion: traefik.containo.us/v1alpha1
@ -105,24 +103,77 @@ spec:
- web
- websecure
routes:
- match: Host(`$DOMAIN`)
- match: Host(`${APP_DOMAIN}`, `www.${APP_DOMAIN}`)
kind: Rule
services:
- name: ${CI_PROJECT_PATH_SLUG}-service
port: 80
middlewares:
- name: redirect-no-www-to-www
namespace: common-services
tls:
secretName: $DOMAIN
secretName: $APP_DOMAIN
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: $DOMAIN
name: $APP_DOMAIN
spec:
dnsNames:
- $DOMAIN
secretName: $DOMAIN
- $APP_DOMAIN
- www.${APP_DOMAIN}
secretName: $APP_DOMAIN
issuerRef:
name: letsencrypt-staging-dns01
name: $APP_CERT_ISSUER
kind: ClusterIssuer
---
apiVersion: batch/v1
kind: CronJob
metadata:
name: ${CI_PROJECT_PATH_SLUG}-cronjob
spec:
schedule: "* * * * *"
jobTemplate:
spec:
template:
spec:
affinity:
podAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: app
operator: In
values:
- ${CI_PROJECT_PATH_SLUG}-app
topologyKey: "kubernetes.io/hostname"
namespaces: [$KUBE_NAMESPACE]
containers:
- name: ${CI_PROJECT_PATH_SLUG}-scheduled
image: $IMAGE_TAG
imagePullPolicy: Always
command:
- "php"
args:
- "artisan"
- "schedule:run"
envFrom:
- configMapRef:
name: ${CI_PROJECT_PATH_SLUG}-config-map
volumeMounts:
- name: storage
mountPath: /app/srcs/storage
imagePullSecrets:
- name: docker-registry-credentials
volumes:
- name: storage
persistentVolumeClaim:
claimName: ${CI_PROJECT_PATH_SLUG}-pvc-storage
securityContext:
runAsUser: 33
runAsGroup: 33
fsGroup: 33
fsGroupChangePolicy: "OnRootMismatch"
restartPolicy: OnFailure