Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .github/assetatlas/docker-compose-ghcr-tailscale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ services:
volumes:
- assetatlas-config:/usr/src/app/config
- assetatlas-tsbuild-cache:/usr/src/app/.tsbuildcache
- assetatlas-image-uploads:/usr/src/app/uploads
env_file: secrets.env
environment:
NODE_ENV: production
Expand Down Expand Up @@ -53,6 +54,19 @@ services:
restart: unless-stopped
network_mode: host

tusd:
image: tusproject/tusd:latest
command:
- "-upload-dir=/data"
- "-port=1080"
- "-verbose"
ports:
- "1080:1080"
volumes:
- assetatlas-image-uploads:/data
networks:
- default

networks:
assetatlas-network:
driver: bridge
Expand All @@ -67,3 +81,5 @@ volumes:
name: assetatlas-config
assetatlas-tailscale-state:
name: assetatlas-tailscale-state
assetatlas-image-uploads:
name: assetatlas-image-uploads
16 changes: 15 additions & 1 deletion .github/assetatlas/docker-compose-ghcr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ services:
image: ${DOCKER_IMAGE:-ghcr.io/assetatlastracker/assetatlas:latest}
pull_policy: always
volumes:
- assetatlas-config:/usr/src/app/config
- assetatlas-tsbuild-cache:/usr/src/app/.tsbuildcache
- assetatlas-image-uploads:/usr/src/app/uploads
env_file: secrets.env
environment:
NODE_ENV: production
Expand Down Expand Up @@ -37,6 +37,18 @@ services:
environment:
MONGO_URI: mongodb://mongo:27017/assetatlas_db

tusd:
image: tusproject/tusd:latest
command:
- "-upload-dir=/data"
- "-port=1080"
- "-verbose"
ports:
- "1080:1080"
volumes:
- assetatlas-image-uploads:/data
networks:
- default

networks:
assetatlas-network:
Expand All @@ -50,3 +62,5 @@ volumes:
name: assetatlas-tsbuild-cache
assetatlas-config:
name: assetatlas-config
assetatlas-image-uploads:
name: assetatlas-image-uploads
27 changes: 16 additions & 11 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,47 @@ RUN apk add --no-cache python3 make g++ iputils
# Set working directory
WORKDIR /usr/src/app

# Copy package files
COPY package.json package-lock.json* pnpm-lock.yaml* ./
# Copy lockfiles first for better cache utilization
COPY package*.json ./

# Install dependencies
# Install all dependencies (dev+prod) for build
RUN npm ci --silent || npm install --silent

# Copy source files
# Copy source and build
COPY . .

# Build the app
RUN npm run build

FROM node:22-alpine AS production

# Install OS dependencies for Alpine
# Install runtime OS dependencies
RUN apk add --no-cache python3 make g++ iputils

WORKDIR /usr/src/app
ENV NODE_ENV=production

# Copy package files
# Install only production deps
COPY package.json package-lock.json* pnpm-lock.yaml* ./
RUN npm ci --omit=dev --silent || npm install --omit=dev --silent
RUN npm install migrate-mongo --no-audit --no-fund --silent || true

# Copy built output from builder stage (SvelteKit outputs to 'build' not 'dist')
# Copy built artifacts from build stage
COPY --from=build /usr/src/app/build ./build
COPY --from=build /usr/src/app/static ./static
COPY --from=build /usr/src/app/package.json ./package.json
COPY --from=build /usr/src/app/docker/migrate-mongo-docker-config.cjs ./
COPY --from=build /usr/src/app/docker/migrations ./migrations

# Create uploads directory with proper permissions
RUN mkdir -p /usr/src/app/uploads && chown -R node:node /usr/src/app/uploads
# Copy entrypoint (keeps existing script name)
COPY docker/entrypoint-ghcr.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Ensure node user has ownership of the app directory and uploads
RUN mkdir -p /usr/src/app/uploads && chown -R node:node /usr/src/app

# Run as non-root
USER node

EXPOSE 3000

ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "build/index.js"]
50 changes: 0 additions & 50 deletions docker/Dockerfile.ghcr

This file was deleted.

21 changes: 11 additions & 10 deletions docker/entrypoint-ghcr.sh
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
#!/bin/bash
#!/bin/sh
set -e

echo "Starting AssetAtlas..."
echo "Current working directory: $(pwd)"
echo "Running as user: $(id)"

# Set working directory
cd /usr/src/app
echo "Changed to: $(pwd)"
echo "Files in current dir: $(ls -la)"

# Create the .env file
mkdir -p /usr/src/app/docker
echo "IP=${IP:-localhost:3000}" > /usr/src/app/docker/.env
echo "Created .env file at /usr/src/app/docker/.env"

# Ensure proper ownership of files
if [ "$(id -u)" = "0" ]; then
chown -R node:node /usr/src/app
# If running as root, switch to node user to run the application
echo "Switching to node user..."
exec su -c '"$0" "$@"' node -- "$@"
else
exec "$@"
fi
# Run the command passed in
echo "Executing: $@"
exec "$@"
Loading