docker
Post on 08-Feb-2017
38 Views
Preview:
TRANSCRIPT
Stage 1Dockerfile per app
Кастомные скрипты для сборки Docker-image
Ansible плейбук для развертывания инфраструктуры
Ansible docker module
Пример - name: vk container docker: name: vk image: dockerhub_user/collector-vk:latest pull: always state: reloaded links: rabbitmq:rabbitmq,postgres:postgres detach: true publish_all_ports: true volumes: - "{{ ansible_env.HOME }}/config.yaml.template:/app/config.yaml.template" command: /bin/bash -c "envsubst < /app/config.yaml.template > /app/config.yaml && make run"
~ cd collector
~ vagrant up
~ bin/deploy web vk scheduler
Вот тут происходит:docker build -t user/appname .docker push user/appnameansible-playbook -i production playbooks/myapp.yml
Пример
Проблемы Stage 1Нужен вагрант для деплоя
Слишком много conventions
Конфигурация в ansible и vagrant
Сложно линковать контейнеры(Docker legacy links)
При апдейте контейнера - надо перезапускать все зависимости
Примерversion: '2'services:
postgres: container_name: postgres image: postgres:9.5 volumes: - ${DATA_MOUNTPOINT}/pg_data:/pg_data ports: - "127.0.0.1:5432:5432" environment: - PGDATA=/pg_data
redis: container_name: redis image: redis:latest command: redis-server --appendonly yes ports: - "127.0.0.1:6379:6379"
Пример - name: run all containers docker_service: project_name: "{{ project_name }}" project_src: "/{{ project_name }}" files: - docker-compose.yml - docker-compose.apps.yml environment: DATA_MOUNTPOINT: "{{ data_mountpoint }}"
Выигрыш от Stage 2Упрощение и унификация локального и production запуска
Простая связь между контейнерами
Регламентированный порядок запуска сервисов
Vagrant больше не нужен(ну почти)
Проблемы Stage 2Хочется кластер
Говорят, что compose не для продакшена
Почему-то на python
https://github.com/docker/for-mac/issues/881
Были проблемы с созданием кластера
Docker Compose и Docker Swarm Mode не работают вместе
https://github.com/ddrozdov/docker-compose-swarm-mode
https://github.com/docker/docker/tree/master/experimental
Ansible не умеет Docker Swarm Mode => много ручной работы
https://github.com/ansible/ansible-modules-core/pull/5547
Проблемы Stage 3
top related