Skip to content

Commit

Permalink
Docker fixes for command line tools
Browse files Browse the repository at this point in the history
  • Loading branch information
danniel authored Mar 27, 2024
1 parent 973da95 commit e049517
Show file tree
Hide file tree
Showing 5 changed files with 231 additions and 26 deletions.
38 changes: 18 additions & 20 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -119,49 +119,47 @@ logs-prod: ## show the logs of the containers

## [Django operations]
makemigrations: ## generate migrations in a clean container
docker exec seismic_dev sh -c "python3 -Wd ./api/manage.py makemigrations $(apps)"
docker exec seismic_backend_dev sh -c "python3 -Wd ./api/manage.py makemigrations $(apps)"

migrate: ## apply migrations in a clean container
docker exec seismic_dev sh -c "python3 -Wd ./api/manage.py migrate $(apps)"
docker exec seismic_backend_dev sh -c "python3 -Wd ./api/manage.py migrate $(apps)"

migrations: makemigrations migrate ## generate and apply migrations

makemessages: ## generate the strings marked for translation
docker exec seismic_dev sh -c "python3 -Wd ./api/manage.py makemessages -a"
docker exec seismic_backend_dev sh -c "python3 -Wd ./api/manage.py makemessages -a"

compilemessages: ## compile the translations
docker exec seismic_dev sh -c "python3 -Wd ./api/manage.py compilemessages"
docker exec seismic_backend_dev sh -c "python3 -Wd ./api/manage.py compilemessages"

messages: makemessages compilemessages ## generate and compile the translations

collectstatic: ## collect the static files
docker exec seismic_dev sh -c "python3 -Wd ./api/manage.py collectstatic --no-input"
docker exec seismic_backend_dev sh -c "python3 -Wd ./api/manage.py collectstatic --no-input"

format: ## format the code with black & ruff
docker exec seismic_dev sh -c "black ./api && ruff check --fix ./api"
docker exec seismic_backend_dev sh -c "black ./api && ruff check --fix ./api"

pyshell: ## start a django shell
docker exec -it seismic_dev sh -c "python3 -Wd ./api/manage.py shell"
docker exec -it seismic_backend_dev sh -c "python3 -Wd ./api/manage.py shell"

sh: ## start a sh shell
docker exec -it seismic_dev sh -c "sh"
docker exec -it seismic_backend_dev sh -c "sh"

bash: ## start a bash shell
docker exec -it seismic_dev sh -c "bash"
docker exec -it seismic_backend_dev sh -c "bash"


## [Requirements management]
requirements-build: ## run pip compile and add requirements from the *.in files
docker exec seismic_dev sh -c " \
cd ./api && \
docker exec seismic_backend_dev sh -c " \
pip-compile --strip-extras --resolver=backtracking -o requirements.txt requirements.in && \
pip-compile --strip-extras --resolver=backtracking -o requirements-test.txt requirements-test.in && \
pip-compile --strip-extras --resolver=backtracking -o requirements-dev.txt requirements-dev.in \
"

requirements-update: ## run pip compile and rebuild the requirements files
docker exec seismic_dev sh -c " \
cd ./api && \
docker exec seismic_backend_dev sh -c " \
pip-compile --strip-extras --resolver=backtracking -r -U -o requirements.txt requirements.in && \
pip-compile --strip-extras --resolver=backtracking -r -U -o requirements-test.txt requirements-test.in && \
pip-compile --strip-extras --resolver=backtracking -r -U -o requirements-dev.txt requirements-dev.in && \
Expand All @@ -173,10 +171,10 @@ requirements-update: ## run pip compile and rebuild the requirement

## [Tests]
tests: ## run the tests
docker exec seismic_dev sh -c "cd ./api && pytest -Wd $(apps)"
docker exec seismic_backend_dev sh -c "cd ./api && pytest -Wd $(apps)"

tests-cover: ## run the tests with coverage
docker exec seismic_dev sh -c "cd ./api && pytest -Wd --cov --cov-report=xml --cov-report=term-missing --cov-fail-under=60 $(apps)"
docker exec seismic_backend_dev sh -c "cd ./api && pytest -Wd --cov --cov-report=xml --cov-report=term-missing --cov-fail-under=60 $(apps)"


## [Clean-up]
Expand All @@ -203,8 +201,8 @@ clean: clean-docker clean-extras clean-db ## remove all build, test, coverage a

## [Project-specific operations]
mock-data: ## generate fake data
docker exec seismic_dev python3 -Wd ./api/manage.py generate_editions 5
docker exec seismic_dev python3 -Wd ./api/manage.py generate_users 20 --type U
docker exec seismic_dev python3 -Wd ./api/manage.py generate_projects 40
docker exec seismic_dev python3 -Wd ./api/manage.py generate_marketplace 10
docker exec seismic_dev python3 -Wd ./api/manage.py generate_users 2 --type J
docker exec seismic_backend_dev python3 -Wd ./api/manage.py generate_editions 5
docker exec seismic_backend_dev python3 -Wd ./api/manage.py generate_users 20 --type U
docker exec seismic_backend_dev python3 -Wd ./api/manage.py generate_projects 40
docker exec seismic_backend_dev python3 -Wd ./api/manage.py generate_marketplace 10
docker exec seismic_backend_dev python3 -Wd ./api/manage.py generate_users 2 --type J
1 change: 1 addition & 0 deletions api/requirements-test.in
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-r requirements.txt
204 changes: 204 additions & 0 deletions api/requirements-test.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,204 @@
#
# This file is autogenerated by pip-compile with Python 3.11
# by the following command:
#
# pip-compile --output-file=requirements-test.txt --strip-extras requirements-test.in
#
asgiref==3.7.2
# via
# -r requirements.txt
# django
# django-cors-headers
attrs==23.2.0
# via
# -r requirements.txt
# jsonschema
# referencing
blessed==1.20.0
# via -r requirements.txt
boto3==1.34.62
# via -r requirements.txt
botocore==1.34.62
# via
# -r requirements.txt
# boto3
# s3transfer
croniter==2.0.2
# via -r requirements.txt
defusedxml==0.7.1
# via
# -r requirements.txt
# odfpy
diff-match-patch==20230430
# via
# -r requirements.txt
# django-import-export
dj-database-url==2.1.0
# via -r requirements.txt
django==4.2.11
# via
# -r requirements.txt
# dj-database-url
# django-cors-headers
# django-import-export
# django-jazzmin
# django-jquery
# django-picklefield
# django-q2
# django-storages
# djangorestframework
# drf-spectacular
django-cors-headers==4.3.1
# via -r requirements.txt
django-environ==0.11.2
# via -r requirements.txt
django-import-export==3.3.7
# via -r requirements.txt
django-jazzmin==2.6.0
# via -r requirements.txt
django-jquery==3.1.0
# via -r requirements.txt
django-picklefield==3.1
# via
# -r requirements.txt
# django-q2
django-q2==1.6.2
# via -r requirements.txt
django-storages==1.14.2
# via -r requirements.txt
djangorestframework==3.14.0
# via
# -r requirements.txt
# drf-spectacular
drf-spectacular==0.27.1
# via -r requirements.txt
et-xmlfile==1.1.0
# via
# -r requirements.txt
# openpyxl
gevent==24.2.1
# via -r requirements.txt
greenlet==3.0.3
# via
# -r requirements.txt
# gevent
gunicorn==21.2.0
# via -r requirements.txt
inflection==0.5.1
# via
# -r requirements.txt
# drf-spectacular
jmespath==1.0.1
# via
# -r requirements.txt
# boto3
# botocore
jsonschema==4.21.1
# via
# -r requirements.txt
# drf-spectacular
jsonschema-specifications==2023.12.1
# via
# -r requirements.txt
# jsonschema
markuppy==1.14
# via
# -r requirements.txt
# tablib
odfpy==1.4.1
# via
# -r requirements.txt
# tablib
openpyxl==3.1.2
# via
# -r requirements.txt
# tablib
packaging==24.0
# via
# -r requirements.txt
# gunicorn
pillow==10.2.0
# via -r requirements.txt
psutil==5.9.8
# via -r requirements.txt
psycopg2-binary==2.9.9
# via -r requirements.txt
python-dateutil==2.9.0.post0
# via
# -r requirements.txt
# botocore
# croniter
pytz==2024.1
# via
# -r requirements.txt
# croniter
# djangorestframework
pyyaml==6.0.1
# via
# -r requirements.txt
# drf-spectacular
# tablib
referencing==0.33.0
# via
# -r requirements.txt
# jsonschema
# jsonschema-specifications
rpds-py==0.18.0
# via
# -r requirements.txt
# jsonschema
# referencing
s3transfer==0.10.0
# via
# -r requirements.txt
# boto3
six==1.16.0
# via
# -r requirements.txt
# blessed
# python-dateutil
sqlparse==0.4.4
# via
# -r requirements.txt
# django
tablib==3.5.0
# via
# -r requirements.txt
# django-import-export
typing-extensions==4.10.0
# via
# -r requirements.txt
# dj-database-url
uritemplate==4.1.1
# via
# -r requirements.txt
# drf-spectacular
urllib3==2.0.7
# via
# -r requirements.txt
# botocore
wcwidth==0.2.13
# via
# -r requirements.txt
# blessed
whitenoise==6.6.0
# via -r requirements.txt
xlrd==2.0.1
# via
# -r requirements.txt
# tablib
xlwt==1.3.0
# via
# -r requirements.txt
# tablib
zope-event==5.0
# via
# -r requirements.txt
# gevent
zope-interface==6.2
# via
# -r requirements.txt
# gevent

# The following packages are considered to be unsafe in a requirements file:
# setuptools
6 changes: 3 additions & 3 deletions api/wait_for_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import dj_database_url
import psycopg2

logger = logging.getLogger()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler())

Expand All @@ -34,7 +34,7 @@
conn.close()
sys.exit()
except psycopg2.OperationalError:
logger.info(f"DB not ready. Waiting for 1 second ...")
logger.info("DB not ready. Waiting for 1 second ...")
sleep(1)

logger.error(f"Could not connect to DB within {timeout} seconds.")
logger.error("Could not connect to DB within %d seconds.", timeout)
8 changes: 5 additions & 3 deletions docker/dockerfiles/Dockerfile.backend.dev
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y --no-install-recommends \
nginx gcc xz-utils gettext build-essential postgresql-client libpq-dev
locales locales-all \
nginx gcc xz-utils gettext build-essential python3 python3-pip python3-venv python3-dev postgresql-client libpq-dev && \
apt-get clean


ARG S6_OVERLAY_VERSION=3.1.2.1
Expand All @@ -45,10 +47,10 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH"


# install the backend libraries:
COPY ./api/pyproject.toml ./api/requirements.txt /var/www/seismic/api/
COPY ./api/pyproject.toml ./api/requirements-dev.txt /var/www/seismic/api/
WORKDIR /var/www/seismic/api/
RUN python3 -m pip install --upgrade pip setuptools && \
python3 -m pip install -r ./requirements.txt
python3 -m pip install -r ./requirements-dev.txt

# Copy the back-end source code and install the backend libraries:
COPY ./api/ .
Expand Down

0 comments on commit e049517

Please sign in to comment.