From 31a7d8f45ac89c5934ac7a52d93349772245eb10 Mon Sep 17 00:00:00 2001 From: ajurna Date: Tue, 3 Nov 2020 08:36:57 +0000 Subject: [PATCH] fix for duplicate files being created. --- .dockerignore | 5 +- .env.example | 13 +- Dockerfile | 37 ++-- Pipfile.lock | 337 ----------------------------------- cbreader/settings/base.py | 2 + cbreader/settings/nginx.conf | 20 +++ docker-compose.override.yml | 24 --- docker-compose.yml | 52 ++++-- entrypoint-cron.sh | 6 + entrypoint.sh | 7 + pyproject.toml | 3 +- 11 files changed, 112 insertions(+), 394 deletions(-) delete mode 100644 Pipfile.lock create mode 100644 cbreader/settings/nginx.conf delete mode 100644 docker-compose.override.yml create mode 100644 entrypoint-cron.sh create mode 100644 entrypoint.sh diff --git a/.dockerignore b/.dockerignore index dba8e09..8f98fec 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,6 +6,9 @@ !cbreader !comic !comic_auth +!static !manage.py !pyproject.toml -!setup.cfg \ No newline at end of file +!setup.cfg +!entrypoint.sh +!entrypoint-cron.sh \ No newline at end of file diff --git a/.env.example b/.env.example index efe371a..498896e 100644 --- a/.env.example +++ b/.env.example @@ -4,8 +4,17 @@ DJANGO_DEBUG = False DJANGO_ALLOWED_HOSTS = 'localhost' -# pip install psycopg2-binary -DATABASE_URL = 'postgres://{user}:{password}@{hostname}:{port}/{database-name}' +DB_USER=admin +DB_PASS=password +DB_HOST=database +DB_DATABASE=cbwebreader + +# https://github.com/jacobian/dj-database-url +DATABASE_URL = 'postgres://${DB_USER}:${DB_PASS}@${DB_HOST}/${DB_DATABASE}' + +COMIC_BOOK_VOLUME = '/path/to/comic/folder' + +STATIC_ROOT = '/static' # This expects the office winrar unrar command line tool for windows or linux. # Will work without setting if it is in the path diff --git a/Dockerfile b/Dockerfile index 40af9c6..7be725c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,36 @@ FROM python:3-alpine -ENV PYTHONUNBUFFERED 1 - -RUN apk update -RUN apk add --no-cache tini bash unrar dcron postgresql-dev gcc python3-dev musl-dev - -RUN apk add --no-cache --virtual .build-deps mariadb-dev build-base \ - && pip install pipenv \ - && apk add --virtual .runtime-deps mariadb-connector-c-dev mariadb-connector-c \ - && apk del .build-deps +ENV PYTHONFAULTHANDLER=1 \ + PYTHONHASHSEED=random \ + PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 RUN mkdir /src +RUN mkdir /static WORKDIR /src -ADD Pipfile /src -ADD Pipfile.lock /src +ENV PIP_DEFAULT_TIMEOUT=100 \ + PIP_DISABLE_PIP_VERSION_CHECK=1 \ + PIP_NO_CACHE_DIR=1 -RUN pipenv install --deploy --dev --ignore-pipfile --system +RUN apk update +RUN apk add --no-cache tini bash unrar dcron postgresql-dev gcc python3-dev musl-dev libffi-dev + +RUN apk add --no-cache --virtual .build-deps mariadb-dev build-base \ + && apk add --virtual .runtime-deps mariadb-connector-c-dev mariadb-connector-c \ + && apk del .build-deps + +RUN pip install "poetry==1.1.4" + +ADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /src + +COPY pyproject.toml /src + +RUN poetry config virtualenvs.create false \ + && poetry install --no-interaction --no-ansi + +COPY entrypoint.sh /src COPY . /src/ diff --git a/Pipfile.lock b/Pipfile.lock deleted file mode 100644 index ce93f26..0000000 --- a/Pipfile.lock +++ /dev/null @@ -1,337 +0,0 @@ -{ - "_meta": { - "hash": { - "sha256": "25036caa93a668b5386d54417c22afd2bb42bbdf6d8fcb9828a278eefd381269" - }, - "pipfile-spec": 6, - "requires": { - "python_version": "3.8" - }, - "sources": [ - { - "name": "pypi", - "url": "https://pypi.org/simple", - "verify_ssl": true - } - ] - }, - "default": { - "asgiref": { - "hashes": [ - "sha256:8036f90603c54e93521e5777b2b9a39ba1bad05773fcf2d208f0299d1df58ce5", - "sha256:9ca8b952a0a9afa61d30aa6d3d9b570bb3fd6bafcf7ec9e6bed43b936133db1c" - ], - "version": "==3.2.7" - }, - "beautifulsoup4": { - "hashes": [ - "sha256:73cc4d115b96f79c7d77c1c7f7a0a8d4c57860d1041df407dd1aae7f07a77fd7", - "sha256:a6237df3c32ccfaee4fd201c8f5f9d9df619b93121d01353a64a73ce8c6ef9a8", - "sha256:e718f2342e2e099b640a34ab782407b7b676f47ee272d6739e60b8ea23829f2c" - ], - "version": "==4.9.1" - }, - "certifi": { - "hashes": [ - "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304", - "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519" - ], - "version": "==2020.4.5.1" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" - }, - "dj-database-url": { - "hashes": [ - "sha256:4aeaeb1f573c74835b0686a2b46b85990571159ffc21aa57ecd4d1e1cb334163", - "sha256:851785365761ebe4994a921b433062309eb882fedd318e1b0fcecc607ed02da9" - ], - "index": "pypi", - "version": "==0.5.0" - }, - "django": { - "hashes": [ - "sha256:5052b34b34b3425233c682e0e11d658fd6efd587d11335a0203d827224ada8f2", - "sha256:e1630333248c9b3d4e38f02093a26f1e07b271ca896d73097457996e0fae12e8" - ], - "index": "pypi", - "version": "==3.0.7" - }, - "django-bootstrap4": { - "hashes": [ - "sha256:0fcd84f8414a58b43df0b331c00c8b2f1786ae28f75f419b4d33b06fca43e0d1", - "sha256:39f97cbce85eb66f6d76be2029bae171bd3863d0c6932b1c2dae7f299c569b90" - ], - "index": "pypi", - "version": "==1.1.1" - }, - "django-recaptcha2": { - "hashes": [ - "sha256:9ea90db0cec502741be1066c09ec1b8e02a73162a319a042e78e67c4605087af", - "sha256:c0b43851b05c6bf6ebb5ecc890c13ccedacd9bb33d64b4291c74dd6fcbc89366" - ], - "index": "pypi", - "version": "==1.4.1" - }, - "gunicorn": { - "hashes": [ - "sha256:1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626", - "sha256:cd4a810dd51bf497552cf3f863b575dabd73d6ad6a91075b65936b151cbf4f9c" - ], - "index": "pypi", - "version": "==20.0.4" - }, - "idna": { - "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" - ], - "version": "==2.9" - }, - "loguru": { - "hashes": [ - "sha256:1e0e6ff59be5e22f863d909ca989e34bb14c21b374f6af45281e603d003dbb96", - "sha256:4688d9e1f31d70e1ec7ccce5305967bc28f377eb1048d009108c11faebe05bcf" - ], - "index": "pypi", - "version": "==0.5.0" - }, - "pypdf4": { - "hashes": [ - "sha256:7c932441146d205572f96254d53c79ea2c30c9e11df55a5cf87e056c7b3d7f89" - ], - "index": "pypi", - "version": "==1.27.0" - }, - "python-dotenv": { - "hashes": [ - "sha256:25c0ff1a3e12f4bde8d592cc254ab075cfe734fc5dd989036716fd17ee7e5ec7", - "sha256:3b9909bc96b0edc6b01586e1eed05e71174ef4e04c71da5786370cebea53ad74" - ], - "index": "pypi", - "version": "==0.13.0" - }, - "pytz": { - "hashes": [ - "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed", - "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048" - ], - "version": "==2020.1" - }, - "requests": { - "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" - ], - "version": "==2.23.0" - }, - "soupsieve": { - "hashes": [ - "sha256:1634eea42ab371d3d346309b93df7870a88610f0725d47528be902a0d95ecc55", - "sha256:a59dc181727e95d25f781f0eb4fd1825ff45590ec8ff49eadfd7f1a537cc0232" - ], - "version": "==2.0.1" - }, - "sqlparse": { - "hashes": [ - "sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e", - "sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548" - ], - "version": "==0.3.1" - }, - "urllib3": { - "hashes": [ - "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527", - "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115" - ], - "version": "==1.25.9" - } - }, - "develop": { - "asgiref": { - "hashes": [ - "sha256:8036f90603c54e93521e5777b2b9a39ba1bad05773fcf2d208f0299d1df58ce5", - "sha256:9ca8b952a0a9afa61d30aa6d3d9b570bb3fd6bafcf7ec9e6bed43b936133db1c" - ], - "version": "==3.2.7" - }, - "autopep8": { - "hashes": [ - "sha256:60fd8c4341bab59963dafd5d2a566e94f547e660b9b396f772afe67d8481dbf0" - ], - "version": "==1.5.3" - }, - "certifi": { - "hashes": [ - "sha256:1d987a998c75633c40847cc966fcf5904906c920a7f17ef374f5aa4282abd304", - "sha256:51fcb31174be6e6664c5f69e3e1691a2d72a1a12e90f872cbdb1567eb47b6519" - ], - "version": "==2020.4.5.1" - }, - "chardet": { - "hashes": [ - "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae", - "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691" - ], - "version": "==3.0.4" - }, - "django": { - "hashes": [ - "sha256:5052b34b34b3425233c682e0e11d658fd6efd587d11335a0203d827224ada8f2", - "sha256:e1630333248c9b3d4e38f02093a26f1e07b271ca896d73097457996e0fae12e8" - ], - "index": "pypi", - "version": "==3.0.7" - }, - "django-silk": { - "hashes": [ - "sha256:56c2c5aefd1c65161df61e49cf2674862a748a43e81c7c470bcbc4c35c53491c" - ], - "index": "pypi", - "version": "==4.0.1" - }, - "gprof2dot": { - "hashes": [ - "sha256:b43fe04ebb3dfe181a612bbfc69e90555b8957022ad6a466f0308ed9c7f22e99" - ], - "version": "==2019.11.30" - }, - "idna": { - "hashes": [ - "sha256:7588d1c14ae4c77d74036e8c22ff447b26d0fde8f007354fd48a7814db15b7cb", - "sha256:a068a21ceac8a4d63dbfd964670474107f541babbd2250d61922f029858365fa" - ], - "version": "==2.9" - }, - "jinja2": { - "hashes": [ - "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0", - "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035" - ], - "version": "==2.11.2" - }, - "markupsafe": { - "hashes": [ - "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473", - "sha256:09027a7803a62ca78792ad89403b1b7a73a01c8cb65909cd876f7fcebd79b161", - "sha256:09c4b7f37d6c648cb13f9230d847adf22f8171b1ccc4d5682398e77f40309235", - "sha256:1027c282dad077d0bae18be6794e6b6b8c91d58ed8a8d89a89d59693b9131db5", - "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42", - "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff", - "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b", - "sha256:43a55c2930bbc139570ac2452adf3d70cdbb3cfe5912c71cdce1c2c6bbd9c5d1", - "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e", - "sha256:500d4957e52ddc3351cabf489e79c91c17f6e0899158447047588650b5e69183", - "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66", - "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b", - "sha256:62fe6c95e3ec8a7fad637b7f3d372c15ec1caa01ab47926cfdf7a75b40e0eac1", - "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15", - "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1", - "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e", - "sha256:79855e1c5b8da654cf486b830bd42c06e8780cea587384cf6545b7d9ac013a0b", - "sha256:7c1699dfe0cf8ff607dbdcc1e9b9af1755371f92a68f706051cc8c37d447c905", - "sha256:88e5fcfb52ee7b911e8bb6d6aa2fd21fbecc674eadd44118a9cc3863f938e735", - "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d", - "sha256:98c7086708b163d425c67c7a91bad6e466bb99d797aa64f965e9d25c12111a5e", - "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d", - "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c", - "sha256:ade5e387d2ad0d7ebf59146cc00c8044acbd863725f887353a10df825fc8ae21", - "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2", - "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5", - "sha256:b2051432115498d3562c084a49bba65d97cf251f5a331c64a12ee7e04dacc51b", - "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6", - "sha256:c8716a48d94b06bb3b2524c2b77e055fb313aeb4ea620c8dd03a105574ba704f", - "sha256:cd5df75523866410809ca100dc9681e301e3c27567cf498077e8551b6d20e42f", - "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2", - "sha256:e249096428b3ae81b08327a63a485ad0878de3fb939049038579ac0ef61e17e7", - "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be" - ], - "version": "==1.1.1" - }, - "mysqlclient": { - "hashes": [ - "sha256:4c82187dd6ab3607150fbb1fa5ef4643118f3da122b8ba31c3149ddd9cf0cb39", - "sha256:9e6080a7aee4cc6a06b58b59239f20f1d259c1d2fddf68ddeed242d2311c7087", - "sha256:f3fdaa9a38752a3b214a6fe79d7cae3653731a53e577821f9187e67cbecb2e16", - "sha256:f646f8d17d02be0872291f258cce3813497bc7888cd4712a577fd1e719b2f213" - ], - "index": "pypi", - "version": "==1.4.6" - }, - "pycodestyle": { - "hashes": [ - "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", - "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" - ], - "version": "==2.6.0" - }, - "pygments": { - "hashes": [ - "sha256:647344a061c249a3b74e230c739f434d7ea4d8b1d5f3721bc0f3558049b38f44", - "sha256:ff7a40b4860b727ab48fad6360eb351cc1b33cbf9b15a0f689ca5353e9463324" - ], - "version": "==2.6.1" - }, - "python-dateutil": { - "hashes": [ - "sha256:73ebfe9dbf22e832286dafa60473e4cd239f8592f699aa5adaf10050e6e1823c", - "sha256:75bb3f31ea686f1197762692a9ee6a7550b59fc6ca3a1f4b5d7e32fb98e2da2a" - ], - "version": "==2.8.1" - }, - "pytz": { - "hashes": [ - "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed", - "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048" - ], - "version": "==2020.1" - }, - "requests": { - "hashes": [ - "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee", - "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6" - ], - "version": "==2.23.0" - }, - "six": { - "hashes": [ - "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259", - "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced" - ], - "version": "==1.15.0" - }, - "sqlparse": { - "hashes": [ - "sha256:022fb9c87b524d1f7862b3037e541f68597a730a8843245c349fc93e1643dc4e", - "sha256:e162203737712307dfe78860cc56c8da8a852ab2ee33750e33aeadf38d12c548" - ], - "version": "==0.3.1" - }, - "toml": { - "hashes": [ - "sha256:926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f", - "sha256:bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88" - ], - "version": "==0.10.1" - }, - "urllib3": { - "hashes": [ - "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527", - "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115" - ], - "version": "==1.25.9" - }, - "v": { - "hashes": [ - "sha256:2d5a8f79a36aaebe62ef2c7068e3ec7f86656078202edabfdbf74715dc822d36", - "sha256:cd6b6b20b4a611f209c88bcdfb7211321f85662efb2bdd53a7b40314d0a84618" - ], - "index": "pypi", - "version": "==0.0.0" - } - } -} diff --git a/cbreader/settings/base.py b/cbreader/settings/base.py index 2a605e4..1a5c569 100644 --- a/cbreader/settings/base.py +++ b/cbreader/settings/base.py @@ -105,6 +105,8 @@ STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] +STATIC_ROOT = os.getenv('STATIC_ROOT', None) + LOGIN_REDIRECT_URL = "/comic/" LOGIN_URL = "/login/" diff --git a/cbreader/settings/nginx.conf b/cbreader/settings/nginx.conf new file mode 100644 index 0000000..54590d0 --- /dev/null +++ b/cbreader/settings/nginx.conf @@ -0,0 +1,20 @@ +upstream cbwebreader_django { + server cbwebreader:8000; +} + +server { + + listen 80; + + location / { + proxy_pass http://cbwebreader_django; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_redirect off; + } + + location /static/ { + alias /static/; + } + +} \ No newline at end of file diff --git a/docker-compose.override.yml b/docker-compose.override.yml deleted file mode 100644 index a735eec..0000000 --- a/docker-compose.override.yml +++ /dev/null @@ -1,24 +0,0 @@ -version: "3.7" - -services: - tests: - build: . - environment: - - TEST_DATABASE_URL=postgres://admin:password@database:5432/cbwebreader_test - - DJANGO_SETTINGS_MODULE=cbreader.settings.base - links: - - database - command: > - pytest - -vvv - --isort - --flake8 - --black - --cov=. - --cov-report=term-missing - --junitxml=/tmp/test-results.xml - volumes: - - ./cbreader:/src/cbreader - - ./comic:/src/comic - - ./comic_auth:/src/comic_auth - - ${COMIC_BOOK_VOLUME}:/data diff --git a/docker-compose.yml b/docker-compose.yml index 880dce9..b153068 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,33 +1,51 @@ version: "3.7" services: - app: + + cbwebreader: build: . - environment: - - DATABASE_URL=postgres://admin:password@database:5432/cbwebreader - - TEST_DATABASE_URL=postgres://admin:password@database:5432/cbwebreader_test - - DJANGO_SETTINGS_MODULE=cbreader.settings.base - - DJANGO_ALLOWED_HOSTS=* + env_file: .env links: - database depends_on: - database - ports: - - "8000:8000" + expose: + - 8000 volumes: - - ./cbreader:/src/cbreader - - ./comic:/src/comic - - ./comic_auth:/src/comic_auth - ${COMIC_BOOK_VOLUME}:/data - command: python manage.py runserver 0.0.0.0:8000 + - static_files:/static + command: /bin/bash entrypoint.sh + + cbwebreader-cron: + build: . + env_file: .env + links: + - database + depends_on: + - database + volumes: + - ${COMIC_BOOK_VOLUME}:/data + command: /bin/bash entrypoint-cron.sh database: image: postgres:11.4-alpine - ports: - - 5432:5432 + expose: + - 5432 volumes: - /var/lib/postgresql/data environment: - - POSTGRES_USER=admin - - POSTGRES_PASSWORD=password - - POSTGRES_DB=cbwebreader + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASS} + - POSTGRES_DB=${DB_DATABASE} + + nginx: + image: nginx + volumes: + - static_files:/static + - ./cbreader/settings/nginx.conf:/etc/nginx/conf.d/default.conf + ports: + - 1337:80 + depends_on: + - cbwebreader +volumes: + static_files: \ No newline at end of file diff --git a/entrypoint-cron.sh b/entrypoint-cron.sh new file mode 100644 index 0000000..3123348 --- /dev/null +++ b/entrypoint-cron.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +# Start cron daemon. +crond -f + +# Start application. \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..b64eac0 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,7 @@ +wait-for-it.sh database:5432 + +python manage.py migrate --settings=cbreader.settings.base + +python manage.py collectstatic --settings=cbreader.settings.base --noinput + +gunicorn --workers 3 --bind 0.0.0.0:8000 cbreader.wsgi:application \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 3d6b17c..4c40b56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,8 @@ PyPDF4 = "^1.27.0" python-dotenv = "^0.15.0" loguru = "^0.5.3" django-silk = "^4.1.0" -mysqlclient = "1.4.6" +mysqlclient = "^2.0.1" +psycopg2 = "^2.8.6" [tool.poetry.dev-dependencies]