#!/usr/bin/env bash # # deploy-techsolidaire.sh # -------------------------------------------------------------------------- # Déploie via Docker un site vitrine (fictif) pour une association # communautaire d'entraide technologique : "TechSolidaire". # # Le site tient sur une seule page HTML (CSS intégré, aucun menu, # aucun lien externe). Le script génère les fichiers, construit l'image # Docker basée sur nginx, puis lance le conteneur. # # Usage : # ./deploy-techsolidaire.sh # déploie sur le port 8080 # PORT=9000 ./deploy-techsolidaire.sh # déploie sur un autre port # -------------------------------------------------------------------------- set -euo pipefail # --- Paramètres configurables --------------------------------------------- PROJECT_DIR="${PROJECT_DIR:-./techsolidaire-site}" IMAGE_NAME="${IMAGE_NAME:-techsolidaire-vitrine}" CONTAINER_NAME="${CONTAINER_NAME:-techsolidaire}" PORT="${PORT:-8080}" # --- Couleurs pour les messages -------------------------------------------- GREEN='\033[0;32m'; BLUE='\033[0;34m'; YELLOW='\033[1;33m'; NC='\033[0m' info() { echo -e "${BLUE}[INFO]${NC} $*"; } ok() { echo -e "${GREEN}[OK]${NC} $*"; } warn() { echo -e "${YELLOW}[ATTENTION]${NC} $*"; } # --- Vérifications préalables ----------------------------------------------- if ! command -v docker >/dev/null 2>&1; then echo "Docker n'est pas installé ou pas dans le PATH. Installe Docker d'abord." >&2 exit 1 fi if ! docker info >/dev/null 2>&1; then echo "Le démon Docker ne répond pas. Démarre Docker puis relance le script." >&2 exit 1 fi # --- Préparation de l'arborescence ------------------------------------------ info "Préparation du dossier de projet : ${PROJECT_DIR}" mkdir -p "${PROJECT_DIR}" # --- Génération de la page web (une seule page, sans lien externe) ---------- info "Génération de la page web index.html" cat > "${PROJECT_DIR}/index.html" << 'EOF' TechSolidaire — Entraide technologique

L'entraide technologique
au service de tous

Une association communautaire qui démocratise l'accès au numérique : partage de savoirs, réparation, et accompagnement, par et pour les habitants.

Association à but non lucratif · Fictive

Notre activité

TechSolidaire réunit bénévoles, passionnés et curieux autour d'une idée simple : la technologie ne doit laisser personne de côté. Nous animons des ateliers ouverts à tous, accompagnons celles et ceux qui se sentent démunis face aux outils numériques, et donnons une seconde vie au matériel informatique plutôt que de le jeter.

Chaque rencontre repose sur l'échange : ici, on apprend en faisant, on partage ce que l'on sait, et l'on construit ensemble des solutions concrètes. L'entraide est notre seul mode d'emploi.

Notre mobilisation

Portée par une équipe entièrement bénévole, notre association se mobilise chaque semaine sur le terrain. Notre force, c'est le collectif.

120+
bénévoles actifs
48
ateliers par an
900
personnes accompagnées
350
appareils reconditionnés

Quelques projets

Un aperçu de ce que nous menons au quotidien.

Réparation

Repair Café numérique

Un rendez-vous mensuel pour diagnostiquer et réparer ensemble ordinateurs, smartphones et petits appareils, plutôt que de les remplacer.

Inclusion

Le numérique pour tous

Des sessions d'initiation pour les seniors et les personnes éloignées du numérique : démarches en ligne, messagerie, sécurité de base.

Réemploi

Atelier reconditionnement

Nous collectons du matériel inutilisé, le remettons en état et le redistribuons aux familles et aux associations qui en ont besoin.

Logiciel libre

Cloud d'entraide

Un hébergement de services libres géré par la communauté, pour partager fichiers et outils sans dépendre des grandes plateformes.

EOF # --- Génération du Dockerfile ----------------------------------------------- info "Génération du Dockerfile" cat > "${PROJECT_DIR}/Dockerfile" << 'EOF' FROM nginx:alpine # On retire la page par défaut puis on copie notre site RUN rm -rf /usr/share/nginx/html/* COPY index.html /usr/share/nginx/html/index.html EXPOSE 80 EOF # --- Construction de l'image ------------------------------------------------ info "Construction de l'image Docker : ${IMAGE_NAME}" docker build -t "${IMAGE_NAME}" "${PROJECT_DIR}" # --- Nettoyage d'un éventuel conteneur existant ----------------------------- if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then warn "Un conteneur '${CONTAINER_NAME}' existe déjà : suppression." docker rm -f "${CONTAINER_NAME}" >/dev/null fi # --- Lancement du conteneur ------------------------------------------------- info "Démarrage du conteneur sur le port ${PORT}" docker run -d \ --name "${CONTAINER_NAME}" \ -p "${PORT}:80" \ --restart unless-stopped \ "${IMAGE_NAME}" >/dev/null ok "Site déployé !" echo "" echo " ➜ Accès local : http://localhost:${PORT}" echo "" echo "Commandes utiles :" echo " docker logs ${CONTAINER_NAME} # voir les journaux" echo " docker stop ${CONTAINER_NAME} # arrêter le site" echo " docker start ${CONTAINER_NAME} # relancer le site" echo " docker rm -f ${CONTAINER_NAME} # supprimer le conteneur"