mirror of
https://github.com/seanmorley15/AdventureLog.git
synced 2025-07-19 04:49:37 +02:00
fix: update Dockerfiles with metadata labels and improve build process
This commit is contained in:
parent
d91a4fbe98
commit
39c664ab1a
7 changed files with 52 additions and 27 deletions
|
@ -1,11 +1,23 @@
|
||||||
# Use the official Python slim image as the base image
|
# Use the official Python slim image as the base image
|
||||||
FROM python:3.10-slim
|
FROM python:3.13-slim
|
||||||
|
|
||||||
LABEL Developers="Sean Morley"
|
# Metadata labels for the AdventureLog image
|
||||||
|
LABEL maintainer="Sean Morley" \
|
||||||
|
version="v0.9.0" \
|
||||||
|
description="AdventureLog — the ultimate self-hosted travel companion." \
|
||||||
|
org.opencontainers.image.title="AdventureLog" \
|
||||||
|
org.opencontainers.image.description="AdventureLog is a self-hosted travel companion that helps you plan, track, and share your adventures." \
|
||||||
|
org.opencontainers.image.version="v0.9.0" \
|
||||||
|
org.opencontainers.image.authors="Sean Morley" \
|
||||||
|
org.opencontainers.image.url="https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/brand/banner.png" \
|
||||||
|
org.opencontainers.image.source="https://github.com/seanmorley15/AdventureLog" \
|
||||||
|
org.opencontainers.image.vendor="Sean Morley" \
|
||||||
|
org.opencontainers.image.created="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
|
||||||
|
org.opencontainers.image.licenses="GPL-3.0"
|
||||||
|
|
||||||
# Set environment variables
|
# Set environment variables
|
||||||
ENV PYTHONDONTWRITEBYTECODE 1
|
ENV PYTHONDONTWRITEBYTECODE=1
|
||||||
ENV PYTHONUNBUFFERED 1
|
ENV PYTHONUNBUFFERED=1
|
||||||
|
|
||||||
# Set the working directory
|
# Set the working directory
|
||||||
WORKDIR /code
|
WORKDIR /code
|
||||||
|
|
|
@ -14,7 +14,7 @@ class StatsViewSet(viewsets.ViewSet):
|
||||||
"""
|
"""
|
||||||
A simple ViewSet for listing the stats of a user.
|
A simple ViewSet for listing the stats of a user.
|
||||||
"""
|
"""
|
||||||
@action(detail=False, methods=['get'], url_path='counts/(?P<username>[\w.@+-]+)')
|
@action(detail=False, methods=['get'], url_path=r'counts/(?P<username>[\w.@+-]+)')
|
||||||
def counts(self, request, username):
|
def counts(self, request, username):
|
||||||
if request.user.username == username:
|
if request.user.username == username:
|
||||||
user = get_object_or_404(User, username=username)
|
user = get_object_or_404(User, username=username)
|
||||||
|
|
|
@ -10,7 +10,7 @@ Pillow
|
||||||
whitenoise
|
whitenoise
|
||||||
django-resized
|
django-resized
|
||||||
django-geojson
|
django-geojson
|
||||||
setuptools
|
setuptools<81
|
||||||
gunicorn==23.0.0
|
gunicorn==23.0.0
|
||||||
qrcode==8.0
|
qrcode==8.0
|
||||||
slippers==0.6.2
|
slippers==0.6.2
|
||||||
|
|
|
@ -7,7 +7,7 @@ AdventureLog can be installed in a variety of ways, depending on your platform o
|
||||||
::: tip Quick Start Script
|
::: tip Quick Start Script
|
||||||
**The fastest way to get started:**
|
**The fastest way to get started:**
|
||||||
[Install AdventureLog with a single command →](quick_start.md)
|
[Install AdventureLog with a single command →](quick_start.md)
|
||||||
Perfect for most users. Zero guesswork. Maximum adventure. 🚀
|
Perfect for and Docker beginners.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## 🐳 Popular Installation Methods
|
## 🐳 Popular Installation Methods
|
||||||
|
|
|
@ -29,9 +29,8 @@ The script automatically:
|
||||||
1. Verifies Docker is installed and running
|
1. Verifies Docker is installed and running
|
||||||
2. Downloads `docker-compose.yml` and `.env`
|
2. Downloads `docker-compose.yml` and `.env`
|
||||||
3. Prompts you for domain and port settings
|
3. Prompts you for domain and port settings
|
||||||
4. Launches AdventureLog
|
4. Waits for services to start
|
||||||
5. Waits for services to start
|
5. Prints success info with next steps
|
||||||
6. Prints success info with next steps
|
|
||||||
|
|
||||||
## 🧼 Uninstall
|
## 🧼 Uninstall
|
||||||
|
|
||||||
|
|
|
@ -156,7 +156,7 @@ Join thousands of travelers sharing tips, contributing code, and building the fu
|
||||||
|
|
||||||
### 🚀 **Open Source Freedom**
|
### 🚀 **Open Source Freedom**
|
||||||
|
|
||||||
GPL licensed, fully transparent, and built for the community. By travelers, for travelers.
|
GPL 3.0 licensed, fully transparent, and built for the community. By travelers, for travelers.
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,49 @@
|
||||||
# Use this image as the platform to build the app
|
# Use this image as the platform to build the app
|
||||||
FROM node:22-alpine AS external-website
|
FROM node:22-alpine AS external-website
|
||||||
|
|
||||||
# A small line inside the image to show who made it
|
# Metadata labels for the AdventureLog image
|
||||||
LABEL Developers="Sean Morley"
|
LABEL maintainer="Sean Morley" \
|
||||||
|
version="v0.9.0" \
|
||||||
|
description="AdventureLog — the ultimate self-hosted travel companion." \
|
||||||
|
org.opencontainers.image.title="AdventureLog" \
|
||||||
|
org.opencontainers.image.description="AdventureLog is a self-hosted travel companion that helps you plan, track, and share your adventures." \
|
||||||
|
org.opencontainers.image.version="v0.9.0" \
|
||||||
|
org.opencontainers.image.authors="Sean Morley" \
|
||||||
|
org.opencontainers.image.url="https://raw.githubusercontent.com/seanmorley15/AdventureLog/refs/heads/main/brand/banner.png" \
|
||||||
|
org.opencontainers.image.source="https://github.com/seanmorley15/AdventureLog" \
|
||||||
|
org.opencontainers.image.vendor="Sean Morley" \
|
||||||
|
org.opencontainers.image.created="$(date -u +'%Y-%m-%dT%H:%M:%SZ')" \
|
||||||
|
org.opencontainers.image.licenses="GPL-3.0"
|
||||||
|
|
||||||
# The WORKDIR instruction sets the working directory for everything that will happen next
|
# The WORKDIR instruction sets the working directory for everything that will happen next
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copy all local files into the image
|
# Install pnpm globally first
|
||||||
|
RUN npm install -g pnpm
|
||||||
|
|
||||||
|
# Copy package files first for better Docker layer caching
|
||||||
|
COPY package.json pnpm-lock.yaml* ./
|
||||||
|
|
||||||
|
# Clean install all node modules using pnpm with frozen lockfile
|
||||||
|
RUN pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
# Copy the rest of the application files
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Remove the development .env file if present
|
# Remove the development .env file if present
|
||||||
RUN rm -f .env
|
RUN rm -f .env
|
||||||
|
|
||||||
# Install pnpm
|
|
||||||
RUN npm install -g pnpm
|
|
||||||
|
|
||||||
# Clean install all node modules using pnpm
|
|
||||||
RUN pnpm install
|
|
||||||
|
|
||||||
# Build SvelteKit app
|
# Build SvelteKit app
|
||||||
RUN pnpm run build
|
RUN pnpm run build
|
||||||
|
|
||||||
|
# Make startup script executable
|
||||||
|
RUN chmod +x ./startup.sh
|
||||||
|
|
||||||
|
# Change to non-root user for security
|
||||||
|
USER node:node
|
||||||
|
|
||||||
# Expose the port that the app is listening on
|
# Expose the port that the app is listening on
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
# Run the app
|
|
||||||
RUN chmod +x ./startup.sh
|
|
||||||
|
|
||||||
# The USER instruction sets the user name to use as the default user for the remainder of the current stage
|
|
||||||
USER node:node
|
|
||||||
|
|
||||||
# Run startup.sh instead of the default command
|
# Run startup.sh instead of the default command
|
||||||
CMD ["./startup.sh"]
|
CMD ["./startup.sh"]
|
Loading…
Add table
Add a link
Reference in a new issue