При поиске среды разработки для Data Recipe учитывались такие требования, как простота использования, стабильность, открытый исходный код (или, по крайней мере, принципиально бесплатная) и отраслевые стандарты. Ниже приведен список основных компонентов, которые мы выбрали, а также краткий список дополнительных функций, которые сделали их выигрышным выбором.

  • R: отличные пакеты и отлично подходят для исследовательской работы. Если вас интересует IDE, взгляните на RStudio
  • Python: легко интегрируется в производственную среду и имеет отличные пакеты. Если вас интересует IDE, некоторые варианты включают Spyder и Rodeo.
  • Octave: отлично подходит для прототипирования численных экспериментов. Язык Octave похож на Matlab. Octave включает в себя графический интерфейс
  • Jupyter Notebook: совместим с несколькими языками программирования и позволяет обмениваться кодом и результатами.
  • Ubuntu 14.04 LTS: отличное управление пакетами и поддержка сообщества. Планирую в будущем перейти на Ubuntu 16.04 LTS.
  • Docker: отлично подходит для стандартизации, миграции и автоматизации сред. Также отлично подходит для экспериментов с настройками окружающей среды.
  • Nginx: легкий и может масштабироваться до тысяч одновременных подключений.
  • SSL: много вариантов, но инструкции будут специфичны для Let’s Encrypt.

Среда разработки Data Recipe была разработана для использования в сети через доменное имя. Хотя эти два пункта не являются обязательными для разработки, все наши рецепты будут использовать эту среду для согласованности. Если вы предпочитаете работать исключительно на одном компьютере, создайте локальную установку или используйте локальную среду IDE с языками программирования и пакетами.

Шаги

  1. Подтвердите среду и записи DNS
  2. Создать определяемую пользователем сеть Docker
  3. Сборка образов Nginx и Jupyter Docker
  4. Создайте общий виртуальный хост Nginx
  5. Создайте контейнер Nginx Docker
  6. Установить шифрование
  7. Остановить и удалить контейнер Nginx Docker
  8. Создайте виртуальный хост Nginx для Jupyter
  9. Создание контейнеров Jupyter и Nginx Docker.

Ингредиенты

1. Подтвердите среду и записи DNS. Для этого рецепта требуется, чтобы у вас были правильно установлены и обновлены Ubuntu 14.04 LTS и Docker Engine. См. https://help.ubuntu.com/14.04/installation-guide/ и https://docs.docker.com/engine/installation/ для получения помощи по установке. Также убедитесь, что ваши записи DNS для вашего домена указывают на IP-адрес вашего сервера. Вам нужно будет посетить своего провайдера DNS-хостинга для получения инструкций.

2. Создайте определяемую пользователем сеть Docker. Определяемая пользователем мостовая сеть Docker в Docker позволяет контейнерам изолировать себя от внешних сетей, позволяя контейнерам взаимодействовать друг с другом без необходимости связывания. Ниже создается мостовая сеть с именем data recipe_nw.

sudo docker network create --driver bridge datarecipe_nw

3. Создайте образы Nginx и Jupyter Docker. Мы решили не использовать официальный образ Nginx Docker, поскольку он основан на Debian, а этот образ Docker основан на Ubuntu, что дает нам некоторые полезные настройки.

Ниже приведен готовый образ Docker.

sudo docker pull dockerfile/nginx

Официальные блокноты Jupyter хороши, но мы хотели установить дополнительные пакеты, поэтому создали новый Dockerfile. Сохраните его в папке /datarecipe/jupyter.

Ниже образ Docker datarecipe/jupyter создается с предположением, что Dockerfile находится в каталоге /datarecipe/jupyter:

sudo docker build -t="datarecipe/jupyter" /datarecipe/jupyter/Dockerfile

4. Создайте универсальный виртуальный хост Nginx. Для установки SSL требуется активный домен. Создайте общий виртуальный хост для этой цели.

Ниже приведен пример. Сохраните его как nginx-virtual-host-placeholderв каталоге /datarecipe/nginx/sites-enabled:

5.Создайте контейнер Nginx Docker. Далее создается контейнер Nginx Docker с предположением, что пользовательская сеть Docker — это datarecipe_nw, файлы виртуального хоста Nginx находятся в /datarecipe/nginx/sites-enabled, рабочий веб-сайт находится в каталоге /datarecipe/nginx/placeholder, а файлы журналов Nginx будут сохранены в каталоге / каталог datarecipe/nginx/logs:

sudo docker run —-net datarecipe_nw -d -p 80:80 -v /datarecipe/nginx/sites-enabled:/etc/nginx/sites-enabled:ro -v /datarecipe/nginx/placeholder:/etc/nginx/placeholder:rw -v /datarecipe/nginx/logs:/var/log/nginx:rw —-name nginx dockerfile/nginx

6.Установите шифрование. Убедитесь в наличии действительного сертификата шифрования. Если нет, вы можете создать его бесплатно здесь: https://letsencrypt.org/getting-started/. Для клиента мы использовали certbot.

После создания действительного сертификата не забудьте создать символические ссылки на сертификат, не забудьте заменить datarecipe.com на правильное доменное имя и datarecipe на правильный каталог:

# Replace datarecipe.com with your domain name
# Replace datarecipe with the proper directory
sudo ln -s /etc/letsencrypt/live/datarecipe.com/cert.pem /datarecipe/nginx/certs/datarecipe.com/cert.pem
sudo ln -s /etc/letsencrypt/live/datarecipe.com/chain.pem /datarecipe/nginx/certs/datarecipe.com/chain.pem
sudo ln -s /etc/letsencrypt/live/datarecipe.com/fullchain.pem /datarecipe/nginx/certs/datarecipe.com/fullchain.pem
sudo ln -s /etc/letsencrypt/live/datarecipe.com/privkey.pem /datarecipe/nginx/certs/datarecipe.com/privkey.pem

7. Остановите и удалите контейнер Nginx Docker. Некоторые параметры Docker будут изменены для Nginx. Чтобы остановить и удалить контейнер:

sudo docker stop nginx
sudo docker rm nginx

8.Создайте виртуальный хост Nginx для Jupyter. Универсальный виртуальный хост Nginx больше не нужен, поэтому его можно удалить:

rm /datarecipe/nginx/sites-enabled/nginx-virtual-host-placeholder

Для Jupyter необходимо создать виртуальный хост Nginx. Ниже приведен пример, но не забудьте изменить datarecipe.com и nb.datarecipe.com на правильные доменные имена, и сохраните его как nginx-virtual-host-jupyterв каталоге /datarecipe/nginx/sites-enabled:

9. Создайте контейнеры Jupyter и Nginx Docker. Далее создается контейнер Jupyter Docker с предположением, что пользовательская сеть Docker — это datarecipe_nw, а рабочий каталог Jupyter будет /datarecipe/jupyter, но не забудьте заменить ВВЕДИТЕ СВОЙ ПАРОЛЬ ЗДЕСЬ:

# Replace "ENTER YOUR PASSWORD HERE" with your actual password
sudo docker run —-net datarecipe_nw -d -e PASSWORD=”ENTER YOUR PASSWORD HERE” -v /datarecipe/jupyter:/home/jovyan/work —-name jupyter datarecipe/jupyter

Далее создается контейнер Nginx Docker с предположениями, что определяемая пользователем сеть Docker — это datarecipe_nw, сертификаты Let's Encrypt находятся в подкаталогах в каталоге /etc/letsencrypt, Файлы виртуального хоста Nginx находятся в каталоге /datarecipe/nginx/sites-enabled, каталог сертификатов Nginx — /datarecipe/nginx/certs, а файлы журналов Nginx будут сохранены. в каталоге /datarecipe/nginx/logs:

sudo docker run —-net datarecipe_nw -d -p 80:80 -p 443:443 -v /etc/letsencrypt:/etc/letsencrypt:ro -v /datarecipe/nginx/sites-enabled:/etc/nginx/sites-enabled:ro -v /datarecipe/nginx/certs:/etc/nginx/certs:ro -v /datarecipe/nginx/logs:/var/log/nginx:rw —-name nginx dockerfile/nginx

Если впоследствии вам потребуется изменить файл виртуального хоста Nginx, чтобы Nginx использовал изменения, вы можете либо воссоздать контейнер, либо запустить следующее:

sudo docker exec nginx nginx -s reload

Обновления

2 августа 2016 г.: добавлена ​​Octave
28 июля 2016 г.: начальная версия

Вопросы или комментарии? Пожалуйста, дайте нам знать. Мы здесь, чтобы помочь!