Skip to content

Commit f3b0dac

Browse files
committed
fix: improve Docker configuration with validation and path fixes
- Change data directory from /app to /config for consistency - Add startup validation for critical environment variables - Fix GitHub Actions workflow image name to lowercase (GHCR requirement) - Fix health check to use DATABASE_PATH env var - Update all volume mounts to use /config instead of /app - Add proper exit on missing required env vars: - REDDIT_CLIENT_ID - REDDIT_CLIENT_SECRET - REDDIT_USERNAME - REDDIT_PASSWORD - SOURCE_SUBREDDIT - Simplify GitHub Actions tag pattern (remove invalid branch prefix) - Update README documentation for /config paths
1 parent 9a4d3af commit f3b0dac

4 files changed

Lines changed: 39 additions & 18 deletions

File tree

.github/workflows/docker-build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ on:
2424

2525
env:
2626
REGISTRY: ghcr.io
27-
IMAGE_NAME: ${{ github.repository }}
27+
IMAGE_NAME: bakerboy448/redditmodlog
2828

2929
jobs:
3030
build:
@@ -61,7 +61,7 @@ jobs:
6161
type=semver,pattern={{major}}.{{minor}}
6262
type=semver,pattern={{major}}
6363
type=raw,value=latest,enable={{is_default_branch}}
64-
type=sha,prefix={{branch}}-,enable=true,format=short
64+
type=sha
6565
labels: |
6666
org.opencontainers.image.title=Reddit ModLog Wiki Publisher
6767
org.opencontainers.image.description=Automated Reddit moderation log publisher to wiki pages

Dockerfile

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ RUN tar -C / -Jxpf /tmp/s6-overlay-noarch.tar.xz && \
4444

4545
# Create default user and group
4646
RUN groupadd -g 1000 modlogbot && \
47-
useradd -u 1000 -g modlogbot -d /app -s /bin/bash modlogbot
47+
useradd -u 1000 -g modlogbot -d /config -s /bin/bash modlogbot
4848

4949
# Copy virtual environment from builder
5050
COPY --from=builder /opt/venv /opt/venv
@@ -56,16 +56,37 @@ ENV PATH="/opt/venv/bin:$PATH" \
5656
PUID=1000 \
5757
PGID=1000 \
5858
S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0 \
59-
DATABASE_PATH=/app/data/modlog.db \
60-
LOGS_DIR=/app/logs
59+
DATABASE_PATH=/config/data/modlog.db \
60+
LOGS_DIR=/config/logs
6161

6262
# Create application directories
63-
RUN mkdir -p /app /app/data /app/logs /etc/s6-overlay/s6-rc.d/modlog-bot /etc/s6-overlay/s6-rc.d/init-modlogbot /etc/s6-overlay/scripts
63+
RUN mkdir -p /config /config/data /config/logs /app /etc/s6-overlay/s6-rc.d/modlog-bot /etc/s6-overlay/s6-rc.d/init-modlogbot /etc/s6-overlay/scripts
6464

6565
# Create s6 init script for user/group management
6666
RUN echo '#!/command/with-contenv bash\n\
6767
set -e\n\
6868
\n\
69+
# Validate critical environment variables\n\
70+
echo "Validating required environment variables..."\n\
71+
\n\
72+
missing_vars=()\n\
73+
\n\
74+
[ -z "$REDDIT_CLIENT_ID" ] && missing_vars+=("REDDIT_CLIENT_ID")\n\
75+
[ -z "$REDDIT_CLIENT_SECRET" ] && missing_vars+=("REDDIT_CLIENT_SECRET")\n\
76+
[ -z "$REDDIT_USERNAME" ] && missing_vars+=("REDDIT_USERNAME")\n\
77+
[ -z "$REDDIT_PASSWORD" ] && missing_vars+=("REDDIT_PASSWORD")\n\
78+
[ -z "$SOURCE_SUBREDDIT" ] && missing_vars+=("SOURCE_SUBREDDIT")\n\
79+
\n\
80+
if [ ${#missing_vars[@]} -ne 0 ]; then\n\
81+
echo "ERROR: Missing required environment variables:" >&2\n\
82+
printf " - %s\n" "${missing_vars[@]}" >&2\n\
83+
echo "" >&2\n\
84+
echo "Please set all required environment variables and restart the container." >&2\n\
85+
exit 1\n\
86+
fi\n\
87+
\n\
88+
echo "All required environment variables are set."\n\
89+
\n\
6990
PUID=${PUID:-1000}\n\
7091
PGID=${PGID:-1000}\n\
7192
\n\
@@ -76,14 +97,14 @@ groupmod -o -g "$PGID" modlogbot\n\
7697
usermod -o -u "$PUID" modlogbot\n\
7798
\n\
7899
# Fix ownership\n\
79-
echo "Fixing ownership of /app"\n\
80-
chown -R modlogbot:modlogbot /app\n\
100+
echo "Fixing ownership of /config and /app"\n\
101+
chown -R modlogbot:modlogbot /config /app\n\
81102
\n\
82103
# Ensure data directory has correct permissions\n\
83-
if [ ! -f /app/data/modlog.db ]; then\n\
104+
if [ ! -f /config/data/modlog.db ]; then\n\
84105
echo "Initializing database directory"\n\
85-
touch /app/data/modlog.db\n\
86-
chown modlogbot:modlogbot /app/data/modlog.db\n\
106+
touch /config/data/modlog.db\n\
107+
chown modlogbot:modlogbot /config/data/modlog.db\n\
87108
fi' > /etc/s6-overlay/scripts/init-modlogbot-run && \
88109
chmod +x /etc/s6-overlay/scripts/init-modlogbot-run
89110

@@ -111,7 +132,7 @@ COPY --chown=modlogbot:modlogbot config_template.json /app/
111132

112133
# Health check
113134
HEALTHCHECK --interval=5m --timeout=10s --start-period=30s --retries=3 \
114-
CMD python -c "import os, sys; sys.exit(0 if os.path.exists('/app/data/modlog.db') else 1)"
135+
CMD python -c "import os, sys; sys.exit(0 if os.path.exists(os.getenv('DATABASE_PATH', '/config/data/modlog.db')) else 1)"
115136

116137
# Use s6-overlay as entrypoint
117138
ENTRYPOINT ["/init"]

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,8 @@ docker run -d \
242242
-e SOURCE_SUBREDDIT=yoursubreddit \
243243
-e PUID=1000 \
244244
-e PGID=1000 \
245-
-v ./data:/app/data \
246-
-v ./logs:/app/logs \
245+
-v ./data:/config/data \
246+
-v ./logs:/config/logs \
247247
ghcr.io/bakerboy448/redditmodlog:latest
248248
```
249249

docker-compose.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ services:
3333

3434
volumes:
3535
# Persistent data storage
36-
- ./data:/app/data
37-
- ./logs:/app/logs
36+
- ./data:/config/data
37+
- ./logs:/config/logs
3838

3939
# Optional: Mount config file instead of using env vars
4040
# - ./config.json:/app/config.json:ro
@@ -66,8 +66,8 @@ services:
6666
# - REDDIT_PASSWORD=${REDDIT_PASSWORD_2}
6767
# - SOURCE_SUBREDDIT=${SOURCE_SUBREDDIT_2}
6868
# volumes:
69-
# - ./data2:/app/data
70-
# - ./logs2:/app/logs
69+
# - ./data2:/config/data
70+
# - ./logs2:/config/logs
7171

7272
# Optional: External network for reverse proxy integration
7373
# networks:

0 commit comments

Comments
 (0)