Задание 1. Соберем первый образ и запустим.
1. Нужно собрать Docker образ из
- Dockerfile
- entrypoint.sh
- .dockerignore
- requirements.txt
- app.py
$ docker build -t task-one-image .
$ docker images
$ docker run --rm --name task-one-cont task-one-image # Запуск контейнера с захватом консоли
$ docker run --rm -d --name task-one-cont task-one-image # Запуск контейнера в daemon режиме
$ docker run -p 5000:5000 --rm --name task-one-cont task-one-image
Откроем браузер по ссылке http://0.0.0.0:5000
Задание 2. Соберем образ без кода, и примаунтим код к приложению.
1. Нужно собрать Docker образ из
- Dockerfile
- entrypoint.sh
- .dockerignore
$ docker build -t task-two-image .
$ docker images
$ docker run --rm -p 5000:5000 --name task-two-cont task-two-image # Запуск контейнера с захватом консоли
$ docker run --rm -p 5000:5000 -d --name task-two-cont task-two-image # Запуск контейнера в daemon режиме
ВАЖНО!!! У вас будет свой путь до папки на хост машине!!!
$ docker run --rm -d -p 5000:5000 -v ~/projects/docker_less/task-two/:/app --name task-two-cont task-two-image
Откроем браузер по ссылке http://0.0.0.0:5000
Задание 3. Соберем образ, и всю media вытащим из контейнера.
1. Нужно собрать Docker образ из
- Dockerfile
- entrypoint.sh
- .dockerignore
- app.py
- requirements.txt
$ docker build -t task-three-image .
$ docker images
$ docker run --rm -p 5000:5000 --name task-three-cont task-three-image # Запуск контейнера с захватом консоли
$ docker run --rm -p 5000:5000 -d --name task-three-cont task-three-image # Запуск контейнера в daemon режиме
ВАЖНО!!! У вас будет свой путь до папки на хост машине!!!
$ docker run --rm -d -p 5000:5000 -v ~/projects/docker_less/media/:/app/media --name task-three-cont task-three-image
Откроем браузер по ссылке http://0.0.0.0:5000/upload-file/
После загрузки открываем http://0.0.0.0:5000/uploads/
Проверим что в папке media появились файлы
Задание 4. Запустим postfix в другом контейнере и научим приложение отправлять почту.
1. Сoздать network.
$ docker network create examplenet
$ docker run -e maildomain=localhost -e smtp_user=user:password --name postfix -d --net examplenet catatnight/postfix
$ docker build -t task-foo-image .
$ docker images
ВАЖНО!!! У вас будет свой путь до папки на хост машине!!!
$ docker run --rm -d -p 5000:5000 -v ~/projects/docker_less/media/:/app/media -e smtp_host=postfix -e smtp_port=25 -e smtp_user=user -e smtp_password=password --name task-foo-cont --net examplenet task-foo-image
Откроем браузер по ссылке http://0.0.0.0:5000/email/ и попробуем отправить себе письмо
Откроем браузер по ссылке http://0.0.0.0:5000/upload-file/
После загрузки открываем http://0.0.0.0:5000/uploads/
Проверим что в папке media появились файлы
Задание 5. Запустим nginx как интерфейс для веб сервера.
1. Собираем наш Docker image
$ docker build -t task-five-image .
$ docker images
ВАЖНО!!! У вас будет свой путь до папки на хост машине!!!
$ docker run --rm -d -v ~/projects/docker_less/media/:/app/media -e smtp_host=postfix -e smtp_user=user -e smtp_password=password --name task-five-cont --net examplenet task-five-image
$ cd nginx
$ docker build -t task-five-nginx-img .
$ docker run --rm -d -p 8000:80 -e BACKEND_HOST=task-five-cont -e BACKEND_PORT=5000 --name task-five-nginx-cont --net examplenet task-five-nginx-img
Откроем браузер по ссылке http://0.0.0.0:8000/email/ и попробуем отправить себе письмо
Откроем браузер по ссылке http://0.0.0.0:8000/upload-file/
После загрузки открываем http://0.0.0.0:8000/uploads/
Проверим что в папке media появились файлы
Источник: https://github.com/nxexox/docker_lessons/tree/master/docker/