Compare commits
	
		
			2 Commits
		
	
	
		
			1ba2739665
			...
			d035f9d8e7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d035f9d8e7 | |||
| dfb9a306c5 | 
							
								
								
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -35,6 +35,10 @@ docker-compose.yml | |||||||
| # 2024-01-24 Hide static files for Hyperling.com. | # 2024-01-24 Hide static files for Hyperling.com. | ||||||
| Config/Hyperling.com/files/* | Config/Hyperling.com/files/* | ||||||
|  |  | ||||||
| # Ignore things like Config/Hyperling.com-Stage/ | # Ignore things like "Config/Hyperling.com-Stage/"" | ||||||
| *-Stage | *-Stage | ||||||
| Stage-* | Stage-* | ||||||
|  |  | ||||||
|  | # Ignore copies of the Hugo configuration, such as "Config/Hugo-MyWebsite". | ||||||
|  | Hugo-* | ||||||
|  | *-Hugo | ||||||
|   | |||||||
| @@ -4,25 +4,32 @@ | |||||||
| FROM debian:bookworm-slim | FROM debian:bookworm-slim | ||||||
|  |  | ||||||
| ## Setup ## | ## Setup ## | ||||||
| # Cache System Dependencies | # System Dependencies | ||||||
| RUN apt-get update && apt-get install -y git hugo sudo curl wget bash | RUN apt-get update && apt-get install -y git hugo nginx cron curl bash sudo htop | ||||||
|  | RUN service nginx start | ||||||
|  | RUN service cron start | ||||||
|  |  | ||||||
| # User and Group | # User and Group | ||||||
| RUN groupadd -r hugo && useradd -r -s /usr/bin/bash -g hugo hugo | RUN groupadd -r hugo && useradd -r -g hugo hugo | ||||||
|  |  | ||||||
| # Directory Tree | # Hugo Directory Tree | ||||||
| RUN mkdir -pv /var/www/hugo && chown -Rv hugo:hugo /var/www/hugo | RUN mkdir -pv /var/www/hugo && chown -Rv hugo:hugo /var/www/hugo | ||||||
|  |  | ||||||
|  | # NGINX Directory Tree | ||||||
|  | RUN mkdir -pv /var/www/html/ && chown -Rv hugo:hugo /var/www/html/ | ||||||
|  |  | ||||||
|  | # Copy Cron Job to Update Git Repo | ||||||
|  | COPY files/hugo.crontab /etc/cron.d/hugo | ||||||
|  | COPY files/hugo.cronjob.sh /var/www/hugo/cronjob.sh | ||||||
|  | RUN chmod +x /var/www/hugo/cronjob.sh | ||||||
|  | RUN crontab /etc/cron.d/hugo | ||||||
|  |  | ||||||
|  | # Copy Start Script | ||||||
|  | COPY files/main.sh /root/main.sh | ||||||
|  | RUN chmod +x /root/main.sh | ||||||
|  |  | ||||||
| ## Main ## | ## Main ## | ||||||
| # Install + Run Website | # Install + Run Website | ||||||
| WORKDIR /var/www/hugo | WORKDIR /var/www/ | ||||||
| USER hugo | USER root | ||||||
| CMD echo "*** Cloning Repo $REPO ***" && \ | CMD /root/main.sh "$REPO" "$PROD" "$DEV" | ||||||
|     cd /var/www/hugo && \ |  | ||||||
|     rm -rfv site && \ |  | ||||||
|     git clone --recurse-submodules $REPO site && \ |  | ||||||
|     cd site && \ |  | ||||||
|     mkdir -pv public && \ |  | ||||||
|     echo "*** Starting Hugo ***" && \ |  | ||||||
|     hugo version && \ |  | ||||||
|     hugo server -D --noBuildLock --bind 0.0.0.0 |  | ||||||
|   | |||||||
| @@ -9,12 +9,21 @@ services: | |||||||
|       network: host |       network: host | ||||||
|     restart: always |     restart: always | ||||||
|     ports: |     ports: | ||||||
|       - 8013:1313 |       - 8013:80   # Production minified files served using NGINX. | ||||||
|  |       - 1380:1380 # Development files with drafts served by Hugo Server. | ||||||
|     environment: |     environment: | ||||||
|       - REPO=$REPO |       - REPO=$REPO | ||||||
|  |       - PROD=$PROD | ||||||
|  |       - DEV=$DEV | ||||||
|  |     healthcheck: | ||||||
|  |       test: curl -sS http://localhost:80 || curl -sS http://localhost:1380 || exit 1 | ||||||
|  |       interval: 1m | ||||||
|  |       timeout: 10s | ||||||
|  |       retries: 2 | ||||||
|  |       start_period: 30s | ||||||
|     deploy: |     deploy: | ||||||
|       mode: global |       mode: global | ||||||
|       resources: |       resources: | ||||||
|         limits: |         limits: | ||||||
|           cpus: '0.10' |           cpus: '0.10' | ||||||
|           memory: 32M |           memory: 64M | ||||||
|   | |||||||
| @@ -9,3 +9,13 @@ COMPOSE_BAKE=true | |||||||
| ## Git Website Repository | ## Git Website Repository | ||||||
| # | # | ||||||
| REPO=https://git.hyperling.com/me/hugo-jackanope | REPO=https://git.hyperling.com/me/hugo-jackanope | ||||||
|  |  | ||||||
|  | # | ||||||
|  | ## Web Environments | ||||||
|  | # Please use values YES/TRUE and NO/FALSE. | ||||||
|  |  | ||||||
|  | # Whether to start NGINX | ||||||
|  | PROD=YES | ||||||
|  |  | ||||||
|  | # Whether to start Hugo Server | ||||||
|  | DEV=NO | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								Config/HugoExample/files/hugo.cronjob.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								Config/HugoExample/files/hugo.cronjob.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | cd /var/www/hugo/site | ||||||
|  |  | ||||||
|  | git pull | ||||||
|  |  | ||||||
|  | hugo --gc --minify | ||||||
|  |  | ||||||
|  | rm -rfv /var/www/html/* | ||||||
|  | cp -rfv public/* /var/www/html/ | ||||||
							
								
								
									
										1
									
								
								Config/HugoExample/files/hugo.crontab
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Config/HugoExample/files/hugo.crontab
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | * * * * * hugo /var/www/hugo/cronjob.sh | ||||||
							
								
								
									
										58
									
								
								Config/HugoExample/files/main.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								Config/HugoExample/files/main.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | REPO="$1" | ||||||
|  | echo "REPO=$REPO" | ||||||
|  |  | ||||||
|  | PROD="$2" | ||||||
|  | typeset -u PROD | ||||||
|  | echo "PROD=$PROD" | ||||||
|  |  | ||||||
|  | DEV="$3" | ||||||
|  | typeset -u DEV | ||||||
|  | echo "DEV=$DEV" | ||||||
|  |  | ||||||
|  | echo "*** Creating Git Repo ***" | ||||||
|  | sudo -u hugo git clone --recurse-submodules $REPO /var/www/hugo/site | ||||||
|  |  | ||||||
|  | echo "*** Copying Static Files to NGINX ***" | ||||||
|  | sudo -u hugo /var/www/hugo/cronjob.sh | ||||||
|  |  | ||||||
|  | echo "*** Starting Cron ***" | ||||||
|  | service cron start | ||||||
|  |  | ||||||
|  | if [[ "$PROD" == "Y"* || "$PROD" == "T"*  ]]; then | ||||||
|  | 	echo "*** Starting Production Server Loop ***" | ||||||
|  |  | ||||||
|  | 	while true; do | ||||||
|  | 		curl -sS http://localhost:80 > /dev/null || { | ||||||
|  | 			echo "* Prod server not detected, starting..." | ||||||
|  | 			service nginx start | ||||||
|  | 		} | ||||||
|  | 		sleep 30 | ||||||
|  | 	done & | ||||||
|  |  | ||||||
|  | 	cd /var/log/nginx | ||||||
|  | 	tail -f access.log error.log & | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [[ "$DEV" == "Y"* || "$DEV" == "T"* ]]; then | ||||||
|  | 	echo "*** Starting Development Server Loop ***" | ||||||
|  |  | ||||||
|  | 	while true; do | ||||||
|  | 		curl -sS http://localhost:1380 > /dev/null || { | ||||||
|  | 			echo "* Dev server not detected, starting..." | ||||||
|  | 			cd /var/www/hugo/site | ||||||
|  | 			killall hugo 2>/dev/null | ||||||
|  | 			sudo -u hugo hugo server -D --noBuildLock --bind 0.0.0.0 -p 1380 & | ||||||
|  | 		} | ||||||
|  | 		sleep 10 | ||||||
|  | 	done & | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | cd | ||||||
|  |  | ||||||
|  | echo "*** Finished $0 ***" | ||||||
|  |  | ||||||
|  | wait -n | ||||||
|  |  | ||||||
|  | exit $? | ||||||
		Reference in New Issue
	
	Block a user