-
Notifications
You must be signed in to change notification settings - Fork 45
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
103 lines (96 loc) · 3.82 KB
/
Copy pathdocker-compose.yml
File metadata and controls
103 lines (96 loc) · 3.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
version: '3.8'
services:
reddit-stash:
build: .
container_name: reddit-stash
environment:
# Reddit API credentials (required)
REDDIT_CLIENT_ID: ${REDDIT_CLIENT_ID}
REDDIT_CLIENT_SECRET: ${REDDIT_CLIENT_SECRET}
REDDIT_USERNAME: ${REDDIT_USERNAME}
REDDIT_PASSWORD: ${REDDIT_PASSWORD}
# Dropbox credentials (optional)
DROPBOX_APP_KEY: ${DROPBOX_APP_KEY:-}
DROPBOX_APP_SECRET: ${DROPBOX_APP_SECRET:-}
DROPBOX_REFRESH_TOKEN: ${DROPBOX_REFRESH_TOKEN:-}
# S3 credentials (optional — or use IAM roles)
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-}
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-}
AWS_S3_BUCKET: ${AWS_S3_BUCKET:-}
S3_STORAGE_CLASS: ${S3_STORAGE_CLASS:-}
S3_ENDPOINT_URL: ${S3_ENDPOINT_URL:-}
STORAGE_PROVIDER: ${STORAGE_PROVIDER:-}
volumes:
# Mount local reddit directory for persistent data
- ./reddit:/app/reddit
# Mount settings.ini for easy configuration changes
- ./settings.ini:/app/settings.ini:ro
restart: unless-stopped
profiles:
- main
# Service for one-time operations
reddit-stash-oneshot:
build: .
container_name: reddit-stash-oneshot
environment:
REDDIT_CLIENT_ID: ${REDDIT_CLIENT_ID}
REDDIT_CLIENT_SECRET: ${REDDIT_CLIENT_SECRET}
REDDIT_USERNAME: ${REDDIT_USERNAME}
REDDIT_PASSWORD: ${REDDIT_PASSWORD}
DROPBOX_APP_KEY: ${DROPBOX_APP_KEY:-}
DROPBOX_APP_SECRET: ${DROPBOX_APP_SECRET:-}
DROPBOX_REFRESH_TOKEN: ${DROPBOX_REFRESH_TOKEN:-}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-}
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-}
AWS_S3_BUCKET: ${AWS_S3_BUCKET:-}
S3_STORAGE_CLASS: ${S3_STORAGE_CLASS:-}
S3_ENDPOINT_URL: ${S3_ENDPOINT_URL:-}
STORAGE_PROVIDER: ${STORAGE_PROVIDER:-}
volumes:
- ./reddit:/app/reddit
- ./settings.ini:/app/settings.ini:ro
profiles:
- oneshot
# Service for storage operations only (Dropbox or S3)
reddit-stash-storage:
build: .
container_name: reddit-stash-storage
environment:
DROPBOX_APP_KEY: ${DROPBOX_APP_KEY:-}
DROPBOX_APP_SECRET: ${DROPBOX_APP_SECRET:-}
DROPBOX_REFRESH_TOKEN: ${DROPBOX_REFRESH_TOKEN:-}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-}
AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:-}
AWS_S3_BUCKET: ${AWS_S3_BUCKET:-}
S3_STORAGE_CLASS: ${S3_STORAGE_CLASS:-}
S3_ENDPOINT_URL: ${S3_ENDPOINT_URL:-}
STORAGE_PROVIDER: ${STORAGE_PROVIDER:-}
volumes:
- ./reddit:/app/reddit
- ./settings.ini:/app/settings.ini:ro
profiles:
- storage
# Dropbox-only storage shortcut
reddit-stash-dropbox:
build: .
container_name: reddit-stash-dropbox
environment:
DROPBOX_APP_KEY: ${DROPBOX_APP_KEY}
DROPBOX_APP_SECRET: ${DROPBOX_APP_SECRET}
DROPBOX_REFRESH_TOKEN: ${DROPBOX_REFRESH_TOKEN}
STORAGE_PROVIDER: dropbox
volumes:
- ./reddit:/app/reddit
profiles:
- dropbox
# Example usage:
# 1. Copy .env.example to .env and fill in your credentials
# 2. Run main service: docker-compose --profile main up
# 3. Run one-shot: docker-compose --profile oneshot run --rm reddit-stash-oneshot
# 4. Storage upload: docker-compose --profile storage run --rm reddit-stash-storage python storage_utils.py --upload
# 5. Storage download: docker-compose --profile storage run --rm reddit-stash-storage python storage_utils.py --download
# 6. Migrate: docker-compose --profile storage run --rm reddit-stash-storage python storage_utils.py --migrate --source dropbox --target s3 --execute
# 7. Dropbox shortcut: docker-compose --profile dropbox run --rm reddit-stash-dropbox python storage_utils.py --upload