Compare commits
	
		
			10 Commits
		
	
	
		
			5afc3bfaee
			...
			4aa7fa4b00
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 4aa7fa4b00 | |||
| d7a1e6f58a | |||
| f622cba366 | |||
| e86660d34e | |||
| cfb07a6e93 | |||
| 4dd0661e1e | |||
| d6e1186d86 | |||
| 57ade9f67d | |||
| ddeadcf723 | |||
| dbb54b6f81 | 
| @@ -8,19 +8,21 @@ FROM debian:bookworm-slim | ||||
| RUN apt-get update && apt-get install -y git hugo nginx cron curl bash sudo htop | ||||
|  | ||||
| # User and Group | ||||
| RUN groupadd -r hugo && useradd -r -g hugo hugo | ||||
| #RUN groupadd -r hugo && useradd -r -g hugo hugo | ||||
|  | ||||
| # Hugo Directory Tree | ||||
| RUN mkdir -pv /var/www/hugo && chown -Rv hugo:hugo /var/www/hugo | ||||
| RUN mkdir -pv /var/www/hugo/ | ||||
|  | ||||
| # NGINX Directory Tree | ||||
| RUN mkdir -pv /var/www/html/ && chown -Rv hugo:hugo /var/www/html/ | ||||
| RUN mkdir -pv /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 | ||||
| COPY files/crontab /etc/crontab | ||||
| COPY files/cronjob.sh /var/www/hugo/cronjob.sh | ||||
|  | ||||
| # Hugo User Permissions | ||||
| RUN chown -Rv www-data:www-data /var/www/ | ||||
| RUN chmod +x /var/www/hugo/cronjob.sh | ||||
| RUN crontab /etc/cron.d/hugo | ||||
|  | ||||
| # Copy Start Script | ||||
| COPY files/main.sh /root/main.sh | ||||
|   | ||||
							
								
								
									
										26
									
								
								Config/HugoExample/files/cronjob.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								Config/HugoExample/files/cronjob.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| cd /var/www/hugo/site | ||||
|  | ||||
| echo "*** Running cronjob @ `date` ***" | ||||
|  | ||||
| # Pull any updates, and if the project is already up to date, exit successfully. | ||||
| git pull | grep -v "up to date" | ||||
| status="$?" | ||||
| echo "* Pull status is '$status'." | ||||
| if [[ $status != 0 && -e /var/www/html/index.html ]]; then | ||||
| 	echo "* Site is already up to date and copied, exiting." | ||||
| 	exit 0 | ||||
| fi | ||||
|  | ||||
| # If the project was not already up to date, build the new files for NGINX. | ||||
| hugo --gc --minify | ||||
| status="$?" | ||||
| echo "* Hugo status is '$status'." | ||||
| if [[ $status == 0 && -e public/index.html ]]; then | ||||
| 	echo "* Copying files..." | ||||
| 	rm -rfv /var/www/html/* | ||||
| 	mv -v public/* /var/www/html/ | ||||
| fi | ||||
|  | ||||
| exit 0 | ||||
							
								
								
									
										1
									
								
								Config/HugoExample/files/crontab
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Config/HugoExample/files/crontab
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| * * * * * www-data /var/www/hugo/cronjob.sh | ||||
| @@ -1,10 +0,0 @@ | ||||
| #!/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 +0,0 @@ | ||||
| * * * * * hugo /var/www/hugo/cronjob.sh | ||||
| @@ -12,22 +12,36 @@ typeset -u DEV | ||||
| echo "DEV=$DEV" | ||||
|  | ||||
| echo "*** Creating Git Repo ***" | ||||
| sudo -u hugo git clone --recurse-submodules $REPO /var/www/hugo/site | ||||
| sudo -u www-data git clone --recurse-submodules $REPO /var/www/hugo/site | ||||
| status="$?" | ||||
|  | ||||
| echo "*** Validating Git Repo ***" | ||||
| if [[ $status != 0 || ! -d /var/www/hugo/site/.git ]]; then | ||||
| 	echo "ERROR: Hugo project may not have cloned correctly. status='$status'" | ||||
| 	echo "Aborting." | ||||
| 	exit 1 | ||||
| fi | ||||
| echo "* Site exists!" | ||||
|  | ||||
| echo "*** Copying Static Files to NGINX ***" | ||||
| sudo -u hugo /var/www/hugo/cronjob.sh | ||||
| rm -rfv /var/www/html/* | ||||
| sudo -u www-data /var/www/hugo/cronjob.sh | ||||
|  | ||||
| echo "*** Starting Cron ***" | ||||
| service cron start | ||||
| service cron status | ||||
|  | ||||
| if [[ "$PROD" == "Y"* || "$PROD" == "T"*  ]]; then | ||||
| 	echo "*** Starting Production Server Loop ***" | ||||
|  | ||||
| 	while true; do | ||||
| 		curl -sS http://localhost:80 > /dev/null || { | ||||
| 		http_code="`curl -sS http://localhost:80 -o /dev/null -w "%{http_code}"`" | ||||
| 		if [[ $http_code != 200 ]]; then | ||||
| 			echo "* Prod server not detected, starting..." | ||||
| 			service nginx status | ||||
| 			service nginx start | ||||
| 		} | ||||
| 			service nginx status | ||||
| 		fi | ||||
| 		sleep 15 | ||||
| 	done & | ||||
|  | ||||
| @@ -39,19 +53,28 @@ if [[ "$DEV" == "Y"* || "$DEV" == "T"* ]]; then | ||||
| 	echo "*** Starting Development Server Loop ***" | ||||
|  | ||||
| 	while true; do | ||||
| 		curl -sS http://localhost:1380 > /dev/null || { | ||||
| 		http_code="`curl -sS http://localhost:1380 -o /dev/null -w "%{http_code}"`" | ||||
| 		if [[ $http_code != 200 ]]; then | ||||
| 			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 & | ||||
| 		} | ||||
| 			sudo -u www-data hugo server -D --noBuildLock --bind 0.0.0.0 -p 1380 & | ||||
| 		fi | ||||
| 		sleep 30 | ||||
| 	done & | ||||
| fi | ||||
|  | ||||
| echo "*** Following Mail Files ***" | ||||
| cd /var/mail | ||||
| touch mail www-data | ||||
| chown -v mail:mail mail | ||||
| chown -v www-data:mail www-data | ||||
| chmod -v 660 mail www-data | ||||
| tail -f mail www-data & | ||||
|  | ||||
| cd | ||||
|  | ||||
| echo "*** Finished $0 ***" | ||||
| echo "*** Finished $0 @ `date` ***" | ||||
|  | ||||
| wait -n | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user