Leaflet Blog in Deno Fresh

??

Changed files
+15 -28
+11 -12
Dockerfile
··· 2 2 3 3 USER root 4 4 5 - WORKDIR /deno-dir/ 6 - RUN chown -R deno:deno /deno-dir 5 + # Create and set up directory 6 + WORKDIR /app 7 + RUN chown -R deno:deno /app 7 8 8 - # We don't copy files here anymore - they will be copied at runtime 9 - # from the read-only mounted volume 9 + # Copy files at build time 10 + COPY . /app/ 10 11 11 - # Cache dependencies 12 - RUN mkdir -p /src 13 - COPY deno.json /src/ 14 - WORKDIR /src 15 - RUN deno cache -r deno.json 12 + # Ensure Deno user has write permissions 13 + RUN chown -R deno:deno /app 16 14 17 - # Switch back to deno-dir (our actual runtime directory) 18 - WORKDIR /deno-dir/ 15 + # Switch to deno user for better security 16 + USER deno 19 17 20 18 EXPOSE 8000 21 19 22 - # Command is now handled by docker-compose entrypoint 20 + # Run the application 21 + CMD ["run", "-A", "main.ts"]
+4 -16
docker-compose.yml
··· 2 2 services: 3 3 deno-app: 4 4 build: . 5 - # Copy files from . to deno-code volume on start 6 - entrypoint: > 7 - sh -c " 8 - echo 'Copying files from /src to /deno-dir...' && 9 - cp -R /src/. /deno-dir/ && 10 - echo 'Files copied. Contents of /deno-dir:' && 11 - ls -la /deno-dir/ && 12 - echo 'Running application...' && 13 - deno run -A /deno-dir/main.ts 14 - " 15 - # Mount source code as read-only at different path for copying 5 + # Use named volume for persistent data 16 6 volumes: 17 - - .:/src:ro 18 - - deno-code:/deno-dir 7 + - deno_data:/app/data 19 8 ports: 20 9 - "8001:8000" 21 10 environment: 22 11 - DENO_ENV=production 23 12 24 13 volumes: 25 - deno-code: 26 - # This ensures the volume is recreated each time 27 - name: "deno-code-${COMPOSE_PROJECT_NAME:-default}" 14 + deno_data: 15 + name: "deno_data"