Code source et image Docker qui alimentent lipeng.ac et d'autres projets connexes
Antony-Nuxt (Nuxt.js / Vue.js v2) https://github.com/ttttonyhe/antony-nuxt →
Antoine (Vue.js v2) https://github.com/ttttonyhe/antony →
Tony (Vue.js v2 / PHP) https://github.com/ttttonyhe/tony →
SSR/SSG/ISR à la demande
Palette de commandes
Gestion de l'état Redux + Redux Saga
Système de commentaires Nextment
Barre latérale de table des matières dynamique
Tableau de bord personnel
Mode sombre
Super opiniâtre, complètement exagéré.
Manuscrit
Cadre
Réagir (Suivant.js)
Mise en œuvre de la Fondation/Adaptateur à venir
Livre d'histoires
Turborepo
Récupération de données
Chargement infini
Revalidation
Attente
swr
récupérer (itinéraires API)
Gestion de l'État
Boîte à outils Redux
Saga Redux
Style :
composants stylisés
CSS vent arrière
Gestion de contenu :
WordPress (Qiniu - Stockage de fichiers statiques)
API WP REST (implémentation de GraphQL à venir)
CVM Tencent Cloud (CentOS/Nginx/MySQL/PHP)
Nexment (LeanCloud)
Newsletter (Listmonk)
Journalisation des erreurs et métrique Web Vitals
Sentinelle
Linters
ESLint
Plus jolie
CommitLint
CI/CD
Actions GitHub
Vercel
git clone [email protected]:ttttonyhe/ouorz-mono.git pnpm installcd applications/principal
Créez un fichier .env
avec votre configuration, voir ci-dessous pour une liste des variables d'environnement utilisées dans ce projet :
LeanCloud :
NEXT_PUBLIC_LC_KEY
NEXT_PUBLIC_LC_ID
Sentinelle:
NEXT_PUBLIC_SENTRY_DSN
SENTRY_AUTH_TOKEN
SENTRY_PROJECT
SENTRY_ORG
ISR à la demande :
REVALIDATION_REQUEST_TOKEN
pnpm run dev:main
Avertissement
L’exécution de WordPress dans un conteneur Docker est extrêmement lente sur les machines moins performantes
>=1 Go de RAM sans MySQL 8, ou >=2 Go de RAM avec MySQL 8 est recommandé
Ce projet est enveloppé dans un conteneur Docker construit sur la base de l'image officielle WordPress Docker : wordpress:php8.0-apache.
Chaque build génère une image Docker statique (similaire à une application conteneurisée typique), ce qui signifie que la mise à jour de WordPress lui-même ou l'ajout de nouveaux thèmes/plugins nécessitent un redéploiement.
Tous les téléchargements sont stockés dans un magasin externe (Qiniu, similaire à AWS S3), donc wp-content/uploads
peut être traité comme des données temporaires.
L'application main
utilise l'API WordPress REST pour récupérer des données, l'application wordpress
fonctionne comme un CMS sans tête. Le thème peg
est utilisé pour personnaliser le comportement des points de terminaison de l'API REST, donc peg/functions.php
devrait être l'objectif principal lorsqu'il s'agit de développer une application wordpress
.
Base de données MySQL :
WORDPRESS_DB_HOST
WORDPRESS_DB_NAME
WORDPRESS_DB_PASSWORD
WORDPRESS_DB_USER
WORDPRESS_TABLE_PREFIX
Paramètres:
WORDPRESS_DEBUG
En option, WORDPRESS_CONFIG_EXTRA
peut être défini pour inclure d'autres configurations :
Connexion SSL MySQL :
define("MYSQL_CLIENT_FLAGS", MYSQLI_CLIENT_SSL);
Désactivez les avertissements et avis PHP :
ini_set("error_reporting", E_ALL & ~E_NOTICE);
ini_set("display_errors","Off")
Cache d'objets Redis :
define("WP_REDIS_HOST", "redis_database_host");
define("WP_REDIS_PASSWORD", "redis_database_pwd");"
define("WP_REDIS_PORT", "redis_database_port")
docker build --tag ouorz-wordpress .docker run -p 8080:80 -e WORDPRESS_DB_HOST=[dev_database_host] -e WORDPRESS_DB_USER=[dev_database_user] -e WORDPRESS_DB_PASSWORD=[dev_database_pwd] -e WORDPRESS_DB_NAME=[dev_database_name] -e WORDPRESS_DEBUG=vrai -e WORDPRESS_CONFIG_EXTRA="define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL);" -e WORDPRESS_TABLE_PREFIX=[dev_database_prefix] ouorz-wordpress
Ce projet est basé sur Umami
Suivez les instructions ici → pour vous inscrire à Maxmind GeoLite2 et récupérer une clé de licence
git clone [email protected]:ttttonyhe/ouorz-mono.git pnpm installcd applications/analyses
Créez un fichier .env
avec votre configuration, voir ci-dessous pour une liste des variables d'environnement utilisées dans ce projet :
DATABASE_URL
HASH_SALT
MAXMIND_LICENSE_KEY
pnpm --filter @ouorz/analytics run build-postgresql-client pnpm run dev:analytics
Une bibliothèque de boîtes à outils frontales très avisées
Livre d'histoires : https://ui.twilight-toolkit.ouorz.com →
Actuellement disponible uniquement dans React, la mise en œuvre de Foundation/Adaptor sera bientôt disponible.
Travaux en cours
Système de build : Turborepo avec mise en cache à distance
Gestionnaire Monorepo : PNpm
Utilisez les alias de projet pour exécuter plus facilement des commandes dans différents packages :
pnpm --filter @ouorz/main run mise à niveau
Utilisez des scripts Turborepo prédéfinis chaque fois que la connaissance du contenu (c'est-à-dire la mise en cache) est nécessaire :
pnpm run build:main
Root package.json
ne doit contenir que des dépendances de développement
En-cours
Mais je ne suis pas vraiment suivi de ça...
Testeur : Cyprès
Démarrer le serveur :
pnpm run build:main pnpm run start:main# orcd apps/main pnpm exécuter dev:test
Exécutez des tests :
pnpm exécuter le test : principal
apps/main
utilise Cypress Dashboard, désactivez-le en modifiant le fichier de configuration en conséquence.
Créez puis déployez l'image Docker via apps/wordpress/Dockerfile
.
Remarque : par défaut, l'image écoute sur le port 80, plutôt que sur le port 8080, plus courant.
Ce projet utilise une combinaison de rendu côté serveur (SSR) et de génération statique incrémentielle (ISG) (à la demande) :
pnpm run build:main pnpm run start:main
pnpm run build:analyse pnpm run start:analyse
Pour déployer le livre d'histoires, exportez-le en tant qu'application Web statique :
pnpm run build:twilight:ui:storybook
Le fichier de configuration fly.toml
se trouve sous apps/wordpress
. Le stockage persistant doit être monté sur /var/www/html/wp-content
.
lancement en mouche secrets de vol définis WORDPRESS_DB_HOST=[dev_database_host] WORDPRESS_DB_USER=[dev_database_user] WORDPRESS_DB_PASSWORD=[dev_database_pwd] WORDPRESS_DB_NAME=[dev_database_name] WORDPRESS_DEBUG=faux WORDPRESS_TABLE_PREFIX=[dev_database_prefix] voler déployer
En option, des volumes portant le même nom peuvent être créés dans plusieurs régions Fly.io, ce qui permet à Fly d'exécuter une ou plusieurs instances de l'application dans plusieurs régions :
les volumes de vol créent ouorz_wordpress_wp_content --region yyz --size 1 --no-encryption les volumes de vol créent ouorz_wordpress_wp_content --region fra --size 1 --no-encryption les volumes de vol créent ouorz_wordpress_wp_content --region hkg --size 1 --no-encryption
nombre d'écailles de mouche 3
En option, Fly.io propose des bases de données Redis entièrement gérées qui peuvent être créées à l'aide des commandes suivantes :
voler redis créer
Le trafic est automatiquement acheminé via une adresse IPv6 privée limitée à votre organisation Fly.
Assurez-vous de définir le chemin du répertoire racine sur apps/<project-name>
, puis mettez à jour la commande build comme suit :
cd ../.. && pnpm run build:<nom-projet>
L'activation du déploiement basé sur les différences est fortement recommandée :
git diff --quiet HEAD^ HEAD ./
GPL-3.0