mirror of
https://github.com/chibicitiberiu/ytsm.git
synced 2024-02-24 05:43:31 +00:00
Environment Variables and Docker standalone support (#21)
* Ignore .dist folder used by visual studio code * Add example env file * Added environment variables * Ignore env file * Added default name to be ytmanager instead * Default to postgres * Update example env for postgres instead of sqlite * Added default as postgres as well in settings * Add volume for sqlite3 database storage (incase desired) * Added example env file for sqlite3 configuration * whitespace for sanity of my own * Add database_url as an optional env variable * hopefully working towards chibicitiberiu/ytsm#6 * Added default command * Expose 8000 * Added environment variable prefixes * added environment variable to parse for dj_database_url * Take out command in docker-compose since it's already in the Dockerfile as a cmd * SQLite as default * Create Docker README with information about how to run with Docker * Took out postgres. If people desire it, they can add it themselves. * Took out db depenednecy for docker-compose * Change cmd * Fixed up commands to run better in readme * Added underscore to Docker_README * Change default .db file location
This commit is contained in:
parent
092949ff9c
commit
baaf9577da
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,6 +1,7 @@
|
|||||||
.vs
|
.vs
|
||||||
.vscode
|
.vscode
|
||||||
temp/
|
temp/
|
||||||
|
env.env
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
@ -115,3 +116,9 @@ venv.bak/
|
|||||||
dmypy.json
|
dmypy.json
|
||||||
|
|
||||||
media/
|
media/
|
||||||
|
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
39
Docker_README.md
Normal file
39
Docker_README.md
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
Running with Docker
|
||||||
|
===
|
||||||
|
|
||||||
|
Sample Run command
|
||||||
|
-----
|
||||||
|
```bash
|
||||||
|
docker run -d --name ytsm -p 80:8000 --env-file sqlite3.env.env --volume ./downloads:/usr/src/app/data/downloads chibicitiberiu/ytsm:latest
|
||||||
|
```
|
||||||
|
### Quick Rundown:
|
||||||
|
- `--expose 80:8000` maps the Host OS port 80 to the container port 80
|
||||||
|
- `--env-file sqlite3.env.env` points to the env file with the desired variable settings (saves from typing them in the command line)
|
||||||
|
- `--volume ./downloads:/usr/src/app/data/downloads` maps the downloads folder of the current directory to the container folder `downloads` (where you could set the program to download to)
|
||||||
|
- `chibicitiberiu/ytsm:latest` tells Docker which image to run the container with (in this case, the latest version)
|
||||||
|
|
||||||
|
**Note:** Replace `./downloads` in the command to where you want the downloads folder to be mapped to on the Host OS. Ex: `/path/to/host/download/folder:/path/to/container/download/folder`
|
||||||
|
|
||||||
|
|
||||||
|
Environment variables
|
||||||
|
-----
|
||||||
|
- YTSM_DATABASE_ENGINE
|
||||||
|
- YTSM_DATABASE_NAME
|
||||||
|
- YTSM_YOUTUBE_API_KEY
|
||||||
|
|
||||||
|
|
||||||
|
Volumes
|
||||||
|
-----
|
||||||
|
- /usr/src/app/data/media
|
||||||
|
- /usr/src/app/data/db
|
||||||
|
|
||||||
|
|
||||||
|
Notes
|
||||||
|
----
|
||||||
|
If you experience any issues with the app running, make sure to run the following command to apply Django migrations to the database
|
||||||
|
|
||||||
|
### When using just the Dockerfile/Image
|
||||||
|
- `docker exec ytsm python manage.py migrate`
|
||||||
|
|
||||||
|
### When using the docker-compose file
|
||||||
|
- `docker exec ytsm_web_1 python manage.py migrate`
|
15
Dockerfile
15
Dockerfile
@ -8,5 +8,20 @@ RUN apt-get install ffmpeg -y
|
|||||||
COPY ./app/requirements.txt ./
|
COPY ./app/requirements.txt ./
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
ENV YTSM_DATABASE_ENGINE='django.db.backends.sqlite3'
|
||||||
|
ENV YTSM_DATABASE_NAME='/usr/src/app/data/db/ytmanager.db'
|
||||||
|
ENV YTSM_DATABASE_HOST=''
|
||||||
|
ENV YTSM_DATABASE_USERNAME=''
|
||||||
|
ENV YTSM_DATABASE_PASSWORD=''
|
||||||
|
ENV YTSM_DATABASE_PORT=''
|
||||||
|
ENV YTSM_YOUTUBE_API_KEY='AIzaSyBabzE4Bup77WexdLMa9rN9z-wJidEfNX8'
|
||||||
|
|
||||||
|
VOLUME /usr/src/app/data/media
|
||||||
|
VOLUME /usr/src/app/data/db
|
||||||
|
|
||||||
COPY ./app/ .
|
COPY ./app/ .
|
||||||
COPY ./config/ ./config/
|
COPY ./config/ ./config/
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
|
||||||
|
CMD ["/bin/bash", "init.sh"]
|
@ -21,7 +21,7 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
SECRET_KEY = '^zv8@i2h!ko2lo=%ivq(9e#x=%q*i^^)6#4@(juzdx%&0c+9a0'
|
SECRET_KEY = '^zv8@i2h!ko2lo=%ivq(9e#x=%q*i^^)6#4@(juzdx%&0c+9a0'
|
||||||
|
|
||||||
YOUTUBE_API_KEY = "AIzaSyBabzE4Bup77WexdLMa9rN9z-wJidEfNX8"
|
YOUTUBE_API_KEY = os.getenv('YTSM_YOUTUBE_API_KEY', 'AIzaSyBabzE4Bup77WexdLMa9rN9z-wJidEfNX8')
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = True
|
DEBUG = True
|
||||||
@ -81,14 +81,18 @@ WSGI_APPLICATION = 'YtManager.wsgi.application'
|
|||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.postgresql',
|
'ENGINE': os.getenv('YTSM_DATABASE_ENGINE', 'django.db.backends.postgresql'),
|
||||||
'NAME': 'postgres',
|
'NAME': os.getenv('YTSM_DATABASE_NAME', os.path.join(BASE_DIR, 'ytmanager.db')),
|
||||||
'USER': 'postgres',
|
'HOST': os.getenv('YTSM_DATABASE_HOST', None),
|
||||||
'HOST': 'db',
|
'USER': os.getenv('YTSM_DATABASE_USERNAME', None),
|
||||||
'PORT': 5432,
|
'PASSWORD': os.getenv('YTSM_DATABASE_PASSWORD', None),
|
||||||
|
'PORT': os.getenv('YTSM_DATABASE_PORT', None)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if os.getenv('YTSM_DATABASE_URL', None):
|
||||||
|
import dj_database_url
|
||||||
|
DATABASES['default'] = dj_database_url.parse(os.environ['YTSM_DATABASE_URL'], conn_max_age=600)
|
||||||
|
|
||||||
# Password validation
|
# Password validation
|
||||||
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
|
# https://docs.djangoproject.com/en/1.11/ref/settings/#auth-password-validators
|
||||||
|
@ -2,6 +2,7 @@ apscheduler
|
|||||||
gunicorn
|
gunicorn
|
||||||
django
|
django
|
||||||
django-crispy-forms
|
django-crispy-forms
|
||||||
|
dj_database_url
|
||||||
youtube-dl
|
youtube-dl
|
||||||
google-api-python-client
|
google-api-python-client
|
||||||
google_auth_oauthlib
|
google_auth_oauthlib
|
||||||
|
@ -11,23 +11,13 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- web
|
- web
|
||||||
|
|
||||||
db:
|
|
||||||
image: postgres
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- /var/lib/postgresql/data
|
|
||||||
environment:
|
|
||||||
POSTGRES_PASSWORD: postgres
|
|
||||||
POSTGRES_DB: ytmanager
|
|
||||||
|
|
||||||
web:
|
web:
|
||||||
build: .
|
build: .
|
||||||
|
env_file:
|
||||||
|
- sqlite3.env.env
|
||||||
tty: true
|
tty: true
|
||||||
command: ./init.sh
|
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- "8000:8000"
|
||||||
volumes:
|
volumes:
|
||||||
- ./media:/usr/src/app/data/media
|
- ./media:/usr/src/app/data/media
|
||||||
depends_on:
|
- ./db:/usr/src/app/data/db
|
||||||
- db
|
|
||||||
|
|
||||||
|
3
sqlite3.env.env
Normal file
3
sqlite3.env.env
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
YTSM_DATABASE_ENGINE=django.db.backends.sqlite3
|
||||||
|
YTSM_DATABASE_NAME=/usr/src/app/data/db/ytmanager.db
|
||||||
|
YTSM_YOUTUBE_API_KEY=AIzaSyBabzE4Bup77WexdLMa9rN9z-wJidEfNX8
|
Loading…
Reference in New Issue
Block a user