mirror of
				https://github.com/KevinMidboe/infra-map.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	template varnish config using gomplate
This commit is contained in:
		| @@ -1,21 +1,24 @@ | ||||
| version: '3.8' | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   app: | ||||
|     build: . | ||||
|     container_name: infra-map | ||||
|     ports: | ||||
|       - '3000:3000' # svelte-kit preview HTTP | ||||
|   varnish: | ||||
|     build: varnish | ||||
|     container_name: varnish-cache | ||||
|     build: | ||||
|       context: varnish | ||||
|       dockerfile: Dockerfile | ||||
|       args: | ||||
|         HASS_HOST: 10.0.0.82 | ||||
|         FRONTEND_HOST: app | ||||
|     ports: | ||||
|       - '6081:6081' # Varnish HTTP | ||||
|       - '6081:6081' | ||||
|     depends_on: | ||||
|       - app | ||||
|  | ||||
|   app: | ||||
|     build: | ||||
|       context: . | ||||
|       dockerfile: Dockerfile | ||||
|     env_file: '.env' | ||||
|     environment: | ||||
|       - VARNISH_LISTEN_PORT=6081 | ||||
|     command: > | ||||
|       varnishd | ||||
|       -F | ||||
|       -f /etc/varnish/default.vcl | ||||
|       -s malloc,256m | ||||
|       -a :6081 | ||||
|       - NODE_ENV=production | ||||
|       - PORT=3000 | ||||
|       - ORIGIN=http://localhost:3000 | ||||
|   | ||||
| @@ -3,8 +3,7 @@ | ||||
| 	import { grey400x225 } from '$lib/utils/staticImageSource'; | ||||
| 	import Dialog from './Dialog.svelte'; | ||||
|  | ||||
| 	const IMAGE_PROXY_URL = 'http://localhost:6081'; | ||||
| 	const IMAGE_REFRESH_INTERVAL = 300; | ||||
| 	const IMAGE_REFRESH_INTERVAL = 3000; | ||||
|  | ||||
| 	let { imageUrl }: { imageUrl: string } = $props(); | ||||
| 	let lastUpdated = new Date(); | ||||
| @@ -17,10 +16,15 @@ | ||||
| 	function loadBlob(blob: Blob) { | ||||
| 		const reader = new FileReader(); | ||||
| 		reader.onloadend = () => { | ||||
| 			imageSource = reader.result || ''; | ||||
| 			const img = document.getElementById('live-image') as HTMLImageElement; | ||||
| 			if (!img) return; | ||||
|  | ||||
| 			imageSource = reader?.result || ''; | ||||
| 			if (imageSource === '') { | ||||
| 				console.log("no image data, returning") | ||||
| 				return | ||||
| 			} | ||||
|  | ||||
| 			// set imageSource to image element | ||||
| 			img.src = `data:image/jpeg;base64; ${imageSource}`; | ||||
| 			lastUpdated = new Date(); | ||||
| @@ -80,6 +84,7 @@ | ||||
| 	{:else} | ||||
| 		<Dialog title="Live stream of printer" on:close={() => (fullscreen = false)}> | ||||
| 			<img style="width: 100%;" src={String(imageSource)} id="live-image" /> | ||||
| 			<span>Last update {timestamp}s ago</span> | ||||
| 		</Dialog> | ||||
|  | ||||
| 		<img src={String(grey400x225)} /> | ||||
|   | ||||
| @@ -25,8 +25,6 @@ | ||||
| 		if (counter + 1 >= colors.length) counter = 1; | ||||
| 		else counter += 1; | ||||
|  | ||||
| 		console.log(counter); | ||||
|  | ||||
| 		return { | ||||
| 			bgColor: colors[counter - 1][0], | ||||
| 			color: colors[counter - 1][1], | ||||
| @@ -99,7 +97,6 @@ | ||||
| 		font-size: 1.1rem; | ||||
| 		line-height: 1.4; | ||||
| 		line-height: 1.7; | ||||
| 		max-width: 80%; | ||||
| 		color: #333; | ||||
|  | ||||
| 		background-color: #fafafa; /* Subtle background to separate it from the rest */ | ||||
|   | ||||
| @@ -13,7 +13,6 @@ const AVAILABLE_RESOURCES = [ | ||||
|  | ||||
| export const load: PageServerLoad = async ({ params }) => { | ||||
| 	const { resource, uid } = params; | ||||
| 	console.log('PARAMS:', params); | ||||
|  | ||||
| 	if (!AVAILABLE_RESOURCES.includes(resource)) { | ||||
| 		return { | ||||
|   | ||||
| @@ -3,13 +3,11 @@ import { produce } from 'sveltekit-sse'; | ||||
|  | ||||
| export function GET({ request }) { | ||||
| 	return produce(async function start({ emit }) { | ||||
| 		console.log('----- REQUEST -----'); | ||||
| 		const url = new URL(request.url); | ||||
| 		const pod = url.searchParams.get('pod'); | ||||
| 		const namespace = url.searchParams.get('namespace'); | ||||
| 		const container = url.searchParams.get('container'); | ||||
|  | ||||
| 		console.log('pod, namespace:', pod, namespace); | ||||
| 		const k8sLogs = createLogStream(pod, namespace, container); | ||||
| 		k8sLogs.start(); | ||||
| 		const unsubscribe = k8sLogs.logEmitter.subscribe((msg: string) => { | ||||
|   | ||||
| @@ -23,7 +23,6 @@ async function fetchImage(src: string) { | ||||
| } | ||||
| 
 | ||||
| export const GET: RequestHandler = async ({ url }) => { | ||||
| 	console.log('GET'); | ||||
| 	url.pathname = url.pathname.replace('/image/', ''); | ||||
| 
 | ||||
| 	const res = await fetchImage(url.href); | ||||
| @@ -21,7 +21,19 @@ RUN git clone https://github.com/varnish/libvmod-digest.git /opt/libvmod-digest | ||||
|     ./configure VARNISHSRC=/usr/include/varnish && \ | ||||
|     make && make install | ||||
|  | ||||
| COPY . /etc/varnish/ | ||||
| COPY --from=hairyhenderson/gomplate:stable /gomplate /bin/gomplate | ||||
|  | ||||
| ARG HASS_HOST | ||||
| ARG FRONTEND_HOST | ||||
| ENV HASS_HOST=$HASS_HOST | ||||
| ENV FRONTEND_HOST=$FRONTEND_HOST | ||||
|  | ||||
| COPY default.vcl.tmpl /etc/varnish/ | ||||
| COPY *.vcl /etc/varnish/ | ||||
| COPY includes /etc/varnish/includes | ||||
|  | ||||
| RUN gomplate -f /etc/varnish/default.vcl.tmpl -o /etc/varnish/default.vcl | ||||
| RUN rm /etc/varnish/default.vcl.tmpl | ||||
|  | ||||
| EXPOSE 6081 | ||||
|  | ||||
|   | ||||
| @@ -3,20 +3,18 @@ vcl 4.0; | ||||
| import std; | ||||
| import digest; | ||||
| 
 | ||||
| # include "handlers/ttl-override-handler.vcl"; | ||||
| include "includes/x-cache-header.vcl"; | ||||
| 
 | ||||
| include "vcl_deliver.vcl"; | ||||
| 
 | ||||
| # Define backend pointing to Home Assistant IP | ||||
| backend hass_backend { | ||||
|     .host = "10.0.0.82"; | ||||
|     .host = "{{ getenv `HASS_HOST` `homeassistant.local` }}"; | ||||
|     .port = "8123"; | ||||
| } | ||||
| 
 | ||||
| backend app_frontend { | ||||
|     .host = "host.docker.internal"; | ||||
|     .port = "5173"; | ||||
|     .host = "{{ getenv `FRONTEND_HOST` `localhost` }}"; | ||||
|     .port = "3000"; | ||||
| } | ||||
| 
 | ||||
| sub vcl_recv { | ||||
		Reference in New Issue
	
	Block a user