Статьи:
11 типов современных баз данных: краткие описания, схемы и примеры БД
Как бы я сейчас объяснил молодому себе… зачем существуют требования ACID для баз данных?
$ docker run debian echo 'Hello World'
Подключиться к интерактивной оболочке контейнера и выполнить какую-нибудь команду:
$ docker run -i -t debian bash
Запуск контейнера, дав имя хосту:
$ docker run -h HOST -i -t debian bash
По умолчанию команда docker ps показывает только запущенные контейнеры. С аргументом -а (docker ps -a) показывает все контейнеры, включая остановленные:
$ docker ps
Docker diff — команда, которая отслеживает изменения в файловой системе контейнера Docker. Она показывает, какие файлы были добавлены, изменены или удалены внутри работающего или остановленного контейнера.
$ docker diff practical_nightingale
Всё что было записано в stdout и stderr контейнера во время его работы:
$ docker logs practical_nightingale
Удаление контейнера:
$ docker rm practical_nightingale
Статьи:
Почти все, что вы хотели бы знать про Docker
$ docker build -t test_app .
Теперь мы можем запустить наше приложение:
$ docker run test_app python /app/app.py
Запуск приложения с аргументом -p, который принимает два числа разделенных двоеточием. Первое число - какой порт хоста использовать для связи с портом внутри контейнера, второе число - на какой порт внутри контейнера перенаправлять запросы с порта хоста
$ docker run -p5050:5000 test_app python /app/app.py
Добавляем в Dockerfile команды, которые выполнятся в момент запуска контейнера, что избавит нас от необходимости в команде запуска стартовать приложение собственноручно(WORKDIR и ENTRYPOINT):
Правило: помещать на верх Dockerfile такие команды, которые будут выполнятся редко, а вниз которые будут запускаться чаще.Снова собираем:
$ docker build -t test_app .
Снова запускаем контейнер(-e - передать переменные в окружение контейнера)
$ docker run -p5050:5000 -e "SERVICE_NAME=service1" test_app
(было $ docker run -p5050:5000 test_app python /app/app.py)
$ docker login
Список образов:
$ docker images
Для последнего успешного билда укажем репозиторий:
$ docker tag my_app muertecivil/test_app
Загрузка образа в репозиторий:
$ docker push muertecivil/test_app
Загрузка образа из репозитория:
$ docker pull muertecivil/test_app
Ссылки:
$ ssh -V
$ ssh-keygen -t rsa -b 2048 -C "TimeWeb Machine" -f timeweb
Смотрим как выглядит наш открытый ключ:
$ cat timeweb.pub
$ chmod 600 <путь_к_ключу>
Подключение к серверу через SSH:
$ ssh -i <путь_к_ключу> <имя_пользователя>@<публичный_ip>
# adduser user
Даем пользователю права администратора добавив пользователя 'user' в группу 'sudo':
# usermod -aG sudo user
Переключаемся на пользователя 'user':
# su - user
С помощью команда exit или сочетания клавиш ctrl+d выходим из под user и отключаемся от сервера.
Заходим в систему под user в систему:
$ ssh -i <путь_к_ключу> user@<публичный_ip>
Переходим в домашнюю папку:
$ cd ~
Создаем директорию '.ssh':
$ mkdir -p .ssh
Изменяем права на папку:
$ chmod 700 .ssh
Записываем открытый ключ в файл в папке .ssh:
$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC71WE1Yt+fivi8MFJM6or0ReikTNmGbX1ae3RY5FmgJr5ni5vPiVyoErDkJWzlYzAbZYbvtY5Se34mZhl5KUId/facOo0J0sLXKNc8P1SXoVIMYIXxu5ajYEw7K/xB2KDzzJ1k3Y3wldA1eyUSS4khkvM0IlqZvdycEnsXrcv3CFCh2TmtgG7eyF8/OxXl7EYtk/csmdnHRjru1QGvVVNMh2S1aoJiOgViOqkSkV0suq0cWyaSYexVIEej/eU3XgB8aebuICliqYe+myRq0SsxaNdNUmRlgDMzj8uQ/6JiYq/Do9AfpYqLW7Lpc5WKj9BEfhffewZDXI6Ax6chHsxp TimeWeb Machine" >> ~/.ssh/authorized_keys
Проверяем, что файл создался:
$ cat ~/.ssh/authorized_keys
Файл конфигурации SSH:
$ sudo nano /etc/ssh/sshd_config$ sudo systemctl reload sshd.service
$ ssh -i <путь_к_ключу> user@<публичный_ip>
Проверяем версию python:
$ python3 -V
Устанавливаем модуль virtualenv:
$ sudo apt install python3-virtualenv
Создаём рабочую папку:
$ mkdir workspace
$ cd workspace
Создаем виртуальное окружение:
$ python3 -m virtualenv -p python3 venv
Активируем виртуальное окружение:
$ source venv/bin/activate
Устанавливаем flask:
$ pip install flask
$ touch app.py
Открываем его в текстовом редакторе и пишем приложение:
$ vim app.py
Сохраняем, закрываем файл и стартуем сервер указав публичный IP адрес сервера :
$ flask run -h 193.188.23.138
rsync -e "ssh -i timeweb" -Praz /home/projects/python_advanced/module_08_deploy/materials/new_year_application/app.py user@193.188.23.138:/home/user/workspace/new_year_application