This describes docker commands from Nick’s flask course. Enough information to build and run an app in Docker.
docker --version
docker-compose --version
docker-compose up --build
docker-compose stop
docker-compose up
docker images
docker-compose ps docker ps
docker rmi -f $(docker images -qf dangling=true)
[ docker images -qf dangling=true ]
docker rmi —help
docker system prune -a
docker-compose rm -f replace the above command with this one: docker-compose down which stops and cleans up the container docker-compose down -v also removes the volumes (such as the database)
docker network ls docker volume ls
docker volume rm volume_name_to_delete
docker-compose exec website snakeeyes docker-compose exec website snakeeyes test docker-compose exec website snakeeyes cov
docker-compose exec website py.test snakeeyes/tests docker-compose exec website py.test —cov-report term-missing —cov snakeeyes
docker-compose exec website flake8 . docker-compose exec website flake8 . —exclude init.py
docker-compose exec website snakeeyes flake8 docker-compose exec website snakeeyes flake8 —help docker-compose exec website snakeeyes flake8 —no-skip-init
docker-compose exec website snakeeyes db docker-compose exec website snakeeyes db reset —with-testdb
docker-compose exec website snakeeyes add docker-compose exec website snakeeyes add users docker-compose exec website snakeeyes add all
docker-compose exec website snakeeyes secret docker-compose exec website snakeeyes secret 64 docker-compose exec website snakeeyes routes docker-compose exec website snakeeyes loc
** snakeeyes user and snakeeyes database: docker-compose exec postgres psql -U snakeeyes snakeeyes brings up the psql command prompt for the snakeeyes database: snakeeyes=# snakeeyes=# \dt # to print out a list if the db tables
now lets show all active users:
snakeeyes=# select email,is_active from users;
select email,is_active from users where …;
Course Notes (can move elsewhere later)
Nick has a macro for pagination (snakeeyes/templates/macros/items.html) and in that code there are a few occurances of **args. This is so forms, searchboxes or column sorting, etc, do not lose their content when changing pages with the pagination.
<ul class="pagination">
<li class="{{ 'disabled' if resource.page == 1 }}">
<a href="{{ url_for(request.endpoint, page=1, **args) }}"
aria-label="First">
« First
</a>
</li>
<li class="{{ 'disabled' if not resource.has_prev }}">
<a href="{{ url_for(request.endpoint, page=resource.page - 1, **args) }}"
aria-label="Previous">
Prev
</a>
</li>
...