Leaflet Blog in Deno Fresh

??

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