feat: docker config for new frontend
This commit is contained in:
		
							parent
							
								
									c6eba5b51a
								
							
						
					
					
						commit
						bb2fa55cd5
					
				
					 9 changed files with 54 additions and 23 deletions
				
			
		
							
								
								
									
										4
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -6,3 +6,7 @@ config.ini | |||
| *.DotSettings.user | ||||
| proxy-config.json | ||||
| .DS_Store | ||||
| 
 | ||||
| docker/config.ini | ||||
| docker/proxy-config.json | ||||
| docker/frontend.env | ||||
|  |  | |||
|  | @ -2,7 +2,9 @@ | |||
| 
 | ||||
| 1. Copy `docker/config.example.ini` to `docker/config.ini`, and change the settings to your liking. | ||||
| 2. Copy `docker/proxy-config.example.json` to `docker/proxy-config.json`, and do the same. | ||||
| 3. Build with `docker compose build` | ||||
| 4. Run with `docker compose up` | ||||
| 3. Copy `docker/frontend.example.env` to `docker/frontend.env`, and do th esame. | ||||
| 4. Build with `docker compose build` | ||||
| 5. Run with `docker compose up` | ||||
| 
 | ||||
| The Caddy server will listen on `localhost:5004`. | ||||
| The Caddy server will listen on `localhost:5004` for the frontend and API, | ||||
| and on `localhost:5005` for the profile URL shortener. | ||||
|  |  | |||
							
								
								
									
										4
									
								
								Foxnouns.Frontend/.dockerignore
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Foxnouns.Frontend/.dockerignore
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| node_modules/ | ||||
| build/ | ||||
| .env | ||||
| .env* | ||||
							
								
								
									
										17
									
								
								Foxnouns.Frontend/Dockerfile
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Foxnouns.Frontend/Dockerfile
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | |||
| FROM docker.io/node:22-slim | ||||
| 
 | ||||
| ENV PNPM_HOME="/pnpm" | ||||
| ENV PATH="$PNPM_HOME:$PATH" | ||||
| RUN corepack enable | ||||
| 
 | ||||
| COPY ./Foxnouns.Frontend /app | ||||
| COPY ./docker/frontend.env /app/.env.local | ||||
| WORKDIR /app | ||||
| 
 | ||||
| ENV PRIVATE_API_HOST=http://rate:5003/api | ||||
| ENV PRIVATE_INTERNAL_API_HOST=http://backend:5000/api | ||||
| 
 | ||||
| RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile | ||||
| RUN pnpm run build | ||||
| 
 | ||||
| CMD ["pnpm", "node", "build/index.js"] | ||||
|  | @ -3,6 +3,7 @@ import { PUBLIC_API_BASE } from "$env/static/public"; | |||
| import type { HandleFetch } from "@sveltejs/kit"; | ||||
| 
 | ||||
| export const handleFetch: HandleFetch = async ({ request, fetch }) => { | ||||
| 	console.log(PUBLIC_API_BASE, PRIVATE_INTERNAL_API_HOST, PRIVATE_API_HOST); | ||||
| 	if (request.url.startsWith(`${PUBLIC_API_BASE}/internal`)) { | ||||
| 		request = new Request(request.url.replace(PUBLIC_API_BASE, PRIVATE_INTERNAL_API_HOST), request); | ||||
| 	} else if (request.url.startsWith(PUBLIC_API_BASE)) { | ||||
|  |  | |||
|  | @ -5,8 +5,8 @@ services: | |||
|       context: . | ||||
|       dockerfile: ./Dockerfile.backend | ||||
|     environment: | ||||
|       - "Database:Url=Host=pgbouncer;Database=postgres;Username=postgres;Password=postgres" | ||||
|       - "Database:EnablePooling=false" | ||||
|       - "Database:Url=Host=postgres;Database=postgres;Username=postgres;Password=postgres" | ||||
|       - "Database:EnablePooling=true" | ||||
|       - "Host=0.0.0.0" | ||||
|       - "Port=5000" | ||||
|     restart: unless-stopped | ||||
|  | @ -15,13 +15,14 @@ services: | |||
| 
 | ||||
|   frontend: | ||||
|     image: frontend | ||||
|     build: ./Foxnouns.Frontend | ||||
|     environment: | ||||
|       - "API_BASE=http://rate:5003/api" | ||||
|       - "INTERNAL_API_BASE=http://backend:5000/api" | ||||
|     build: | ||||
|       context: ./ | ||||
|       dockerfile: ./Foxnouns.Frontend/Dockerfile | ||||
|     restart: unless-stopped | ||||
|     volumes: | ||||
|       - ./docker/frontend.env:/app/.env | ||||
|     env_file: ./docker/frontend.env | ||||
|     environment: | ||||
|       - "PRIVATE_API_HOST=http://rate:5003/api" | ||||
|       - "PRIVATE_INTERNAL_API_HOST=http://backend:5000/api" | ||||
| 
 | ||||
|   rate: | ||||
|     image: rate | ||||
|  | @ -32,16 +33,6 @@ services: | |||
|     volumes: | ||||
|       - ./docker/proxy-config.json:/app/proxy-config.json | ||||
| 
 | ||||
|   pgbouncer: | ||||
|     image: docker.io/edoburu/pgbouncer:latest | ||||
|     environment: | ||||
|       - "DATABASE_URL=postgres://postgres:postgres@postgres/postgres" | ||||
|       - "AUTH_TYPE=scram-sha-256" | ||||
|       - "MAX_CLIENT_CONN=100" | ||||
|       - "DEFAULT_POOL_SIZE=100" | ||||
|       - "MIN_POOL_SIZE=10" | ||||
|     restart: unless-stopped | ||||
| 
 | ||||
|   postgres: | ||||
|     image: docker.io/postgres:16 | ||||
|     command: [ "postgres", | ||||
|  | @ -61,6 +52,7 @@ services: | |||
|     restart: unless-stopped | ||||
|     ports: | ||||
|       - "5004:80" | ||||
|       - "5005:81" | ||||
|     volumes: | ||||
|       - ./docker/Caddyfile:/etc/caddy/Caddyfile | ||||
|       - caddy_data:/data | ||||
|  |  | |||
|  | @ -1,4 +1,11 @@ | |||
| http:// { | ||||
| # Frontend and API | ||||
| http://localhost:80 { | ||||
|     reverse_proxy /api/* http://rate:5003 | ||||
|     reverse_proxy http://frontend:3000 | ||||
| } | ||||
| } | ||||
| 
 | ||||
| # prns.cc (profile URL shortener) | ||||
| http://localhost:81 { | ||||
|     rewrite * /sid{uri} | ||||
|     reverse_proxy http://backend:5000 | ||||
| } | ||||
|  |  | |||
							
								
								
									
										4
									
								
								docker/frontend.example.env
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								docker/frontend.example.env
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| PUBLIC_LANGUAGE=en | ||||
| PUBLIC_BASE_URL=https://pronouns.cc | ||||
| PUBLIC_SHORT_URL=https://prns.cc | ||||
| PUBLIC_API_BASE=https://pronouns.cc/api | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue