(1) setup python
sudo apt install python-is-python3
(2) setup venv
python -m venv .
source bin/activate
(3) install dependencies
pip install -r requirements.txt
(4) setup test database
docker run -it --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin -e MYSQL_DATABASE=mydb -d -t mysql:8.0.23
# db connection url = root:admin@127.0.0.1:3306/mydb
./wait-for-it.sh localhost:3306
(5) setup adminer for test database
docker run --name adminer --link mysql:mydb -p 7890:8080 -d adminer
# can login to adminer console only after mysql initialized
# server: mysql
# account: root
# password: admin
# database: mydb
(6) export db host and db connection url
export DB_HOST="$(hostname -I | tr -d "[:blank:]"):3306"
export DB_CONNECTION_URL="root:admin@${DB_HOST}/mydb"
(7) run the application with docker
docker build -f Dockerfile -t rent .
docker run -it -e DB_CONNECTION_URL=$DB_CONNECTION_URL rent
(8) test the application
pytest -v --junitxml=test-results/junit.xml test.py
(9) test the application with docker
docker build -f Dockerfile-test -t rent-test .
docker run -it -v "$(pwd)/test-results":/home/app/test-results -e DB_HOST="$(hostname -I | tr -d "[:blank:]"):3306" -e DB_CONNECTION_URL="root:admin@${DB_HOST}/mydb" rent-test