feat: add platformsh config

This commit is contained in:
Jan Kohlbach 2024-08-06 09:39:52 +02:00
parent b006747a45
commit f4025098e9
4 changed files with 102 additions and 0 deletions

30
.environment Normal file
View file

@ -0,0 +1,30 @@
#!/bin/bash
# This script can be a starting point to convert
# PLATFORM_RELATIONSHIPS into another environment variable
# Many CMS systems use a DATABASE_URL to connect to the database
# Feel free to use this as inspiration
getRelationshipInfo() {
RELATIONSHIP_NAME="$1"
PROPERTY="$2"
JQ_STR="to_entries[] | select(.key==\"$RELATIONSHIP_NAME\") | .value[].$PROPERTY"
CMD="echo $PLATFORM_RELATIONSHIPS | base64 -d | jq -r '$JQ_STR'"
eval $CMD
}
# choose the name of the relationship to parse, feel free to alter this
RELATIONSHIP="postgresdatabase"
DB_DATABASE="main"
# Extract the information we need
DB_TYPE=$(getRelationshipInfo "$RELATIONSHIP" 'scheme')
DB_USERNAME=$(getRelationshipInfo "$RELATIONSHIP" 'username')
DB_HOST=$(getRelationshipInfo "$RELATIONSHIP" 'host')
DB_PASS=$(getRelationshipInfo "$RELATIONSHIP" 'password')
DB_PORT=$(getRelationshipInfo "$RELATIONSHIP" 'port')
# Create your DATABASE_URL variable here
export DATABASE_URL="postgresql://$DB_USERNAME:$DB_PASS@$DB_HOST:$DB_PORT/$DB_DATABASE"
# So now we have postgresql://user:@db_mysql.internal:3306/main
# echo "$DATABASE_URL" #only echo to test since it will expose the credentials

55
.platform.app.yaml Normal file
View file

@ -0,0 +1,55 @@
# The name of this app. Must be unique within a project.
name: app
# The runtime the application uses. The 'type' key defines the base container
# image that will be used to run the application. There is a separate base
# container image for each primary language for the application,
# in multiple versions. Check the JavaScript/Node.js documentation
# (https://docs.platform.sh/languages/nodejs.html#supported-versions)
# to find the supported versions for the 'nodejs' type.
type: 'nodejs:18'
dependencies:
nodejs:
yarn: '*'
build:
flavor: none
hooks:
build: |
set -e
yarn install
yarn build
deploy: |
set -e
yarn update-db
# The following block defines a single writable directory, 'web/uploads'
# The 'source' specifies where the writable mount is. The 'local' source
# indicates that the mount point will point to a local directory on the
# application container. The 'source_path' specifies the subdirectory
# from within the source that the mount should point at.
mounts:
'web/uploads':
source: local
source_path: uploads
# The size of the persistent disk of the application (in MB).
disk: 2048
resources:
base_memory: 256
memory_ratio: 128
# The relationships of the application with services or other applications.
#
# The left-hand side is the name of the relationship as it will be exposed
# to the application in the PLATFORM_RELATIONSHIPS variable. The right-hand
# side is in the form '<service name>:<endpoint name>'.
relationships:
postgresdatabase: 'dbpostgres:postgresql'
web:
commands:
start: 'yarn start'

7
.platform/routes.yaml Normal file
View file

@ -0,0 +1,7 @@
"https://{default}/":
type: upstream
upstream: "app:http"
"https://www.{default}/":
type: redirect
to: "https://{default}/"

10
.platform/services.yaml Normal file
View file

@ -0,0 +1,10 @@
# The name given to the PostgreSQL service (lowercase alphanumeric only).
dbpostgres:
# The type of your service (postgresql), which uses the format
# 'type:version'. Be sure to consult the PostgreSQL documentation
# (https://docs.platform.sh/add-services/postgresql.html#supported-versions)
# when choosing a version. If you specify a version number which is not available,
# the CLI will return an error.
type: postgresql:15
# The disk attribute is the size of the persistent disk (in MB) allocated to the service.
disk: 2048