• Стоит ли переходить на единицы Em?

    @entermix
    В планах адаптивные сайты и веб-приложения, кто как считает?

    Стоит конечно )
    Ответ написан
    Комментировать
  • Как поделить большую mysql базу?

    opium
    @opium
    Просто люблю качественно работать
    Наверное, стоит лучше использовать партиционирование вместо ручного биения по таблицам
    Ответ написан
    5 комментариев
  • Как правильно использовать Docker для веб разработки?

    zvd
    @zvd
    Software developer interesting in DevOps
    Добрый день.
    Все, как вы их назвали, «задачи» должны быть по разным контейнерам.

    1. Что брать за базовый образ?
    Что используете то и берите. Используете в работе Debian? Берите Debian ( https://registry.hub.docker.com/_/debian/ )
    2. Чтобы создать свой базовый образ который будете в дальнейшем использовать для приложения, вот вам пример Dockerfile:
    #
    # MyBaseimage Dockerfile
    #
    
    # Pull base image.
    FROM ubuntu:14.04
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    RUN apt-get update
    RUN apt-get upgrade -y
    
    RUN apt-get install -y language-pack-en
    ENV LANGUAGE en_US.UTF-8
    ENV LANG en_US.UTF-8
    ENV LC_ALL en_US.UTF-8
    
    RUN locale-gen en_US.UTF-8
    RUN dpkg-reconfigure locales
    
    RUN echo "Etc/UTC" > /etc/timezone
    RUN dpkg-reconfigure -f noninteractive tzdata
    
    RUN apt-get install -y build-essential
    RUN apt-get install -y python python-dev python-setuptools python-pip python-virtualenv
    RUN apt-get install -y libxml2-dev wget
    RUN apt-get install -y libpcre3
    RUN apt-get install -y libpcre3-dev
    RUN apt-get install -y libssl-dev
    RUN apt-get install -y libncurses5-dev
    RUN apt-get install -y git git-core
    RUN apt-get install -y libpq-dev
    
    # install nginx
    RUN apt-get install -y software-properties-common python-software-properties
    RUN apt-get update

    Собрать image в директории где у вас лежит Dockerfile
    docker build -t your_docker_account/your_baseimage .

    3. Dockerfile для сборки вашего образа уже с приложением
    #
    # MyApp Dockerfile
    #
    
    # Pull base image.
    FROM your_docker_account/your_baseimage
    
    MAINTAINER Your Name <your.email@gmail.maybe>
    
    # Set instructions on build.
    RUN virtualenv /env
    ADD ./ /code
    
    RUN cd /code; /env/bin/python setup.py install
    RUN cp /code/config/config.yml.docker_example /etc/code/config.yml
    
    # Expose ports.
    EXPOSE 8484
    WORKDIR /code
    CMD ["/env/bin/python", "app.py"]

    4. Собрать образ с приложением
    docker build -t your_docker_account/your_app_container .

    5. Запустить контейнер с БД, в качестве примера PostgreSQL
    docker run -p :5432:5432 --name my_postgresdb_container -e POSTGRESQL_DB=mydb_name -e POSTGRESQL_USER=mydb_user -e POSTGRESQL_PASS=super_secret_password -d kamui/postgresql

    для mariadb аналонично, контейнеры ищем здесь: https://registry.hub.docker.com/
    6. Запустить контейнер с вашим приложением, пример:
    docker run -d -p :5000:5000 \
      --name my_app_container \
      --link my_postgresdb_container:postgresdb \
      -e DOCKERDB_ENV_POSTGRESQL_DB=mydb_name \
      -e DOCKERDB_ENV_POSTGRESQL_USER=mydb_user \
      -e DOCKERDB_ENV_POSTGRESQL_PASS=super_secret_password \
      your_docker_account/your_app_container

    7. Подключиться к запущенному контейнеру с приложением
    docker exec -it your_app_container /bin/bash
    8. Читать stdout запущенного приложения в контейнере
    docker logs -f your_app_container

    + Чтобы автоматизировать запуск всех необходимых контейнеров берите Docker Compose ( https://docs.docker.com/compose/ )
    Пример файла конфигурации:
    your_app:
      build: .
      links:
        - postgresdb
      ports:
        - "5000:5000"
      environment:
        DOCKERDB_ENV_POSTGRESQL_DB: mydb_name
        DOCKERDB_ENV_POSTGRESQL_USER: mydb_user
        DOCKERDB_ENV_POSTGRESQL_PASS: super_secret_password
    postgresdb:
      image: kamui/postgresql
      ports:
        - "5432:5432"
      environment:
        POSTGRESQL_DB: mydb_name
        POSTGRESQL_USER: mydb_user
        POSTGRESQL_PASS: super_secret_password

    И теперь вместо пунктов 5 + 6 где мы запускали контейнеры мы можем всё стартануть одной командой
    docker-compose up

    + можно смонтировать код в контейнер и разрабатывать непосредственно в docker'контейнере.
    Надеюсь чем-то вам помог.
    Ответ написан
    3 комментария
  • Docker. Как контролировать код, базу данных и выпуск в production?

    UnknownHero
    @UnknownHero Автор вопроса
    Добавлю ответ на свой же вопрос.

    Прошло достаточно времени и я успел посмотреть и попробовать множество инструментов связанных с Docker.

    Создал 2 приложения , первый этой сам сайт для которого хотел сделать инфраструктуру , второй это инструменты администрирования, тестирования и деплоя.

    Приложение для администрирование развёрнуто на 1-м сервере, на нём есть Docker Registry , Jenkins и ещё пару веб страниц с разной информацией. Всё это обернул в Nginx , работает здорово. Само приложение тоже использует Docker , но обновлять его нужно руками (ssh and etc).

    Сайт ( который на самом деле состоит из бизнес логики , DAL , Postgresql , Rest API , web-frontend , web-backend и ещё пару уровней абстракции :) ) использует содержит около 10 Dockerfile.

    Внутри приложения использую инструменты сборки (grunt для nodejs) и собираю приложение во время сборки образа (docker build) , либо после запуска контейнера для продолжительной разработки с помощью FIG.

    После правки кода, заливаю всё в git репозиторий, Jenkins собирает образы (docker build) и отправляет в Docker Registry, после чего сообщает серверам (сейчас он 1), что нужно обновить образы (docker pull) , и перезапустить контейнеры. Там где нужно сохранить данные , использую data containers , их я не перезапуска и не трогая.
    Со временем хочу сохранять состояние data containers (docker commit) и заливать их на Docker registry (docker push) для бэкапа некоторых данных.

    Сервер собирает и перезапускает обновлённые контейнеры с помощью самописных bash скриптов (они не сложные ), т.к. родные для Docker инструменты для этих целей ещё в стадии разработки (Docker swarm , Docker machine , Docker compose) , а стороние решения скорее всего умрут после выхода этих инструментов.

    Через Environment variables говорю контейнеру в каком он режими работает (local/test/live), но нужно это только для минификаций и уровня логгирования. В этих настройках - чем меньше различия,тем лучше.

    Всё это загнал в vagrant , отлично работает ,но требует хорошое железо для разработки.

    В планах:
    - научиться тегировать образы, что бы можно было откатить все сервера до рабочего состояния в случае багов.
    - добавить процесс автоматического тестирования и оценки качества в Jenkins (для docker приложений нужно поднимать ещё jenkins slave )
    - прикрутить ansible для деплоя и прочих удобностей для администрирования. Связать его с Jenkins

    Итог:
    -Однин раз написал, везде использую.
    - Автоматизация до уровня commit = staging deploy
    - Разделение административных инструментов и сервисов от бизнес приложения.
    - Независимые компоненты ,которые можно легко заменить, слабая связаность.
    ну и минусы:
    - одному тяжело уследить за таким зоопарком )) Был бы администратор/DevOps , было бы зачительно быстрее всё.
    Ответ написан
    1 комментарий
  • Docker. Как контролировать код, базу данных и выпуск в production?

    Использую некоторое подобие автоматизации следующим образом:

    1. На хосте запускаю скрипт, который собирает моё приложение в новый образ из Dockerfile оф. образа Rails: https://github.com/docker-library/rails/blob/3c87a...

    Этот скрипт донастраивает ОС; устанавливает гемы, нужные для старта приложения; копирует код приложения из каталога репозитория на хосте (можно дописать, чтобы вытягивал сразу из репозитория). Как только образ готов, можно останавливать старый контейнер, запускать новый и полностью удалять старый.

    Уверен, что можно с помощью Continuous Integration сервера полностью автоматизировать задачу.

    Dockerfile должен быть составлен так, чтобы в контейнере не происходило изменений, а все изменения писались либо на хост, либо в специальный контейнер для данных, чтобы ничего не потерялось.

    2. Так как в качестве хоста для запуска Docker использую в основном виртуальные машины, то стараюсь не использовать data-контейнеры, а хранить всё на хосте через Volume директивы. Это связано в первую очередь с тем, что для каждого проекта я использую отдельную виртуальную машину. Да и так потеряться ничего не должно, и мониторить проще.

    Если же нужно изолировать хранилища данных (например при расшаривании виртуальной машины между разными клиентами/проектами), то только через data-контейнеры. Тут история немного сложнее в настройке и, может быть запутаннее, но всё же так правильно с точки зрения безопасности.

    Так как виртуальные машины на SSD, проблем с производительностью пока не отмечал. Да и проекты, в принципе, небольшие (до 10000 просмотров в сутки).
    Ответ написан
    Комментировать
  • Какой язык программирования подходит для заработока?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Моя первая девушка была из моего же класса. Увы, с ней я так и не смог толком понять, что такое — быть мужчиной. Ну там на 8 марта да на ДР цветочки подарить — это понятно, но на большее фантазии так и не хватало.

    Я решил бросить её как только школу закончу, а то скучно и беспесперктивняк какой-то... Да и шашни я с ней завёл, только чтобы мужчиной стать, а с этим беда — кроме @#$лей от её бывшего (из параллельного класса) я толком никакой школы и не получил.

    Вот в институте — там другое дело, девок симпотных побольше, и ломаются меньше (мне рассказывали, точняк — верить можно, парни проверенные), но... Какого-то лешего со мной никто не хочет мутить. Я начал в стриптиз-клуб ходить, там есть одна ничего так — я на неё постоянно пялюсь. Говорят, она на меня тоже посматривала (оказалось — наврали...).

    Потом мне посоветовали один клуб — типа оттуда никто одиноким не уходил, начал там зависать:) Круто! Мне 3 раза дали. Ну точнее 2, один раз девушка отрубилась и уснула у меня дома, но я решил, что она согласна. По-любому согласна, раз приехала. А с одной из них даже наметился романчег:)

    Меня правда смущает, что друзья стали посмеиваться надо мной, когда мою подругу увидели... Посоветовали другой клуб, где девчонки круче. Но у меня нет денег на этот клуб, хотя там и правда покрасивше будут...

    Посоветуйте — есть ли какой-нибудь клуб, где девчонки как из второго, а цены как из первого? Очень нужно.
    Ответ написан
    19 комментариев
  • Какая CMS WIKI лучше?

    Сильно зависит от масштабов. Полный список можно посмотреть здесь en.wikipedia.org/wiki/List_of_wiki_software, а сравнить возможности – здесь en.wikipedia.org/wiki/Comparison_of_wiki_software
    Ответ написан
    Комментировать