feat(blueprint): strapi template (#616)

* feat(blueprint): strapi template

* feat: strapi meta.json

* fix: strapi extra colon

* fix: docker syntax for expose and depends_on

* fix: change image base

* fix: strapi healthcheck

* fix: add jwt secret and admin jwt secret to strapi

* fix: strapi healthcheck start interval

* fix(template): strapi v5.33.0

* Update docker-compose.yml

---------

Co-authored-by: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com>
Co-authored-by: Mauricio Siu <siumauricio@icloud.com>
This commit is contained in:
Khiet Tam Nguyen
2026-02-16 12:28:00 +11:00
committed by GitHub
parent 42df67fcbb
commit 131ae0073e
4 changed files with 114 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
# Self-host guide:
# - https://strapi.io/blog/how-to-self-host-your-headless-cms-using-docker-compose
services:
strapi:
image: elestio/strapi-production:v5.33.0
environment:
# https://docs.strapi.io/cms/configurations/environment
NODE_ENV: production
STRAPI_TELEMETRY_DISABLED: true
STRAPI_PLUGIN_I18N_INIT_LOCALE_CODE: en
FAST_REFRESH: true
JWT_SECRET: ${JWT_SECRET}
ADMIN_JWT_SECRET: ${ADMIN_JWT_SECRET}
DATABASE_CLIENT: postgres
DATABASE_HOST: strapi_postgres
DATABASE_PORT: 5432
DATABASE_NAME: strapi
DATABASE_USERNAME: strapi
DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- strapi_data:/srv/app
expose:
- 1337
depends_on:
- strapi_postgres
healthcheck:
test:
- CMD
- wget
- "-q"
- "--spider"
- "http://127.0.0.1:1337"
start_period: 3s
interval: 30s
timeout: 10s
retries: 5
strapi_postgres:
image: postgres:18
environment:
POSTGRES_DB: strapi
POSTGRES_USER: strapi
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- strapi_postgres_data:/var/lib/postgresql
healthcheck:
test:
- CMD-SHELL
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
start_period: 3s
interval: 30s
timeout: 10s
retries: 5
volumes:
strapi_data:
strapi_postgres_data:

View File

@@ -0,0 +1,23 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M0 22.1867C0 11.7278 0 6.49832 3.24916 3.24916C6.49832 0 11.7278 0 22.1867 0H41.8133C52.2722 0 57.5017 0 60.7508 3.24916C64 6.49832 64 11.7278 64 22.1867V41.8133C64 52.2722 64 57.5017 60.7508 60.7508C57.5017 64 52.2722 64 41.8133 64H22.1867C11.7278 64 6.49832 64 3.24916 60.7508C0 57.5017 0 52.2722 0 41.8133V22.1867Z"
fill="#4945FF"
/>
<path fill-rule="evenodd" clip-rule="evenodd"
d="M44.156 19.4131H22.6094V30.4004H33.596V41.3864H44.5827V19.8398C44.5827 19.6041 44.3917 19.4131 44.156 19.4131Z"
fill="white"
/>
<rect x="33.1719" y="30.4004" width="0.426667" height="0.426667" fill="white" />
<path
d="M22.6172 30.4004H33.1772C33.4128 30.4004 33.6039 30.5914 33.6039 30.8271V41.3871H23.0439C22.8082 41.3871 22.6172 41.196 22.6172 40.9604V30.4004Z"
fill="#9593FF"
/>
<path
d="M33.6016 41.3867H44.5882L33.9657 52.0092C33.8314 52.1436 33.6016 52.0484 33.6016 51.8584V41.3867Z"
fill="#9593FF"
/>
<path
d="M22.6151 30.3998H12.1434C11.9534 30.3998 11.8582 30.17 11.9926 30.0356L22.6151 19.4131V30.3998Z"
fill="#9593FF"
/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,15 @@
[variables]
main_domain = "${domain}"
postgres_password = "${password:32}"
jwt_secret = "${password:32}"
admin_jwt_secret = "${password:32}"
[[config.domains]]
serviceName = "strapi"
port = 1337
host = "${main_domain}"
[config.env]
POSTGRES_PASSWORD = "${postgres_password}"
JWT_SECRET = "${jwt_secret}"
ADMIN_JWT_SECRET = "${admin_jwt_secret}"

View File

@@ -5803,6 +5803,24 @@
"media"
]
},
{
"id": "strapi",
"name": "Strapi",
"version": "v5.33.0",
"description": "Open-source headless CMS to build powerful APIs with built-in content management.",
"logo": "strapi.svg",
"links": {
"github": "https://github.com/strapi/strapi",
"discord": "https://discord.com/invite/strapi",
"docs": "https://docs.strapi.io",
"website": "https://strapi.io"
},
"tags": [
"headless",
"cms",
"content-management"
]
},
{
"id": "supabase",
"name": "SupaBase",