ФорумРазработкаУстановка и администрирование ПОDocker - Linux Containers → Начинаю познавать docker

Начинаю познавать docker

  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 1:11 п.п.

    В общем, дошли руки пощупать вплотную этот ваш docker.

    Вопрос такой. Вот пишу я Dockerfile, который соберет мне контейнер. Контейнер большой, сложный и довига в нем всякого софта.
    Как мне писать его последовательно добавляя новые команды, чтобы старые каждый раз не выполнялись?
    Например начинается он с чего-то типа:
    RUN apt-get update
    Выполнил, сохранил контейнер. Понял что надо теперь добавить допустим:
    RUN apt-get install -y nginx
    Но заново ждать пока update пройдет долго и нудно. Какие тут гуд-практик?

  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 1:51 п.п., спустя 39 минут 59 секунд

    Аааа ... похоже дошло ))))

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 4:20 п.п., спустя 2 часа 29 минут 3 секунды

    он кеширует после каждой команды автоматически если не менялись добавленые файлы в контейнер и команды не менялись. Ну и кеширует ровно до изменений конечно. Поэтому файлы проекта которые могут измениться или тп лучше добавлять в конце. Как и всякие pip install -r requirements.txt (они могут меняться), а баовые штуки типа apt-get install python, etc можно наверху отсавлять :)

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 6:21 п.п., спустя 2 часа 1 минуту 25 секунд

    ага, да уже дошло про кеширование, но ты хорошо расписал.

    а вообще все конфиги типа /etc/нечто как лучше организовать?
    - тупо в контейнере с этим работаем и комитим после изменений, обновляем контейнер
    - кладем в директорию проекта и в Dockerfile добавляем команды копирования в контейнер
    - как-то еще???

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 7:54 п.п., спустя 1 час 33 минуты 8 секунд

    ага, да уже дошло про кеширование, но ты хорошо расписал.

    а вообще все конфиги типа /etc/нечто как лучше организовать?
    - тупо в контейнере с этим работаем и комитим после изменений, обновляем контейнер
    - кладем в директорию проекта и в Dockerfile добавляем команды копирования в контейнер
    - как-то еще???

    @AlexB, у меня конфигурация рядом с файлами Dockerfile лежит, в папочках, обычно я повторяю полный путь до файла чтобы мозги себе не ебать. Например надо поменять /etc/hosts - юзаю файлик в подпапках (Dockerfile, configs/etc/hosts). Чтобы потом не думать чо за хуйня.

    Второй вариант тобишь. Считаю его верным самым. Контейнеры как бы stateless и в этом их блядь сила! Не надо делать их stateful имхо :)

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:32 п.п., спустя 37 минут 53 секунды

    А сборку всякого говна из исходников как? Когда надо
    wget
    tar
    make
    make install

    В итоге он все-равно станет stateful? Не?

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:33 п.п., спустя 37 секунд

    А сборку всякого говна из исходников как? Когда надо
    wget
    make
    make install

    @AlexB, так и делаю :)

    ведь код должен быть собран :D Ну и исходники проверить заодно :)

    Спустя 57 сек.

    вот тебе пример моего докера https://gist.github.com/phpdude/bd3767642008de6d91e3e1f5dba3d7d4

    FROM debian:stable
    ENV PYTHONUNBUFFERED 1
    RUN apt-get update && apt-get install -y curl
    RUN curl -sL https://deb.nodesource.com/setup_5.x | bash -
    RUN apt-get install -y nodejs nginx-extras python-pip uwsgi-plugin-python git libpq-dev python-dev libxml2-dev libxslt1-dev vim graphviz
    RUN apt-get install -y libjpeg-dev
    RUN mkdir /app/
    WORKDIR /app/
    ADD libs libs
    ADD project/requirements.txt /app/requirements.txt
    ADD project/assets/package.json /app/project/assets/package.json
    RUN pip install -U -r /app/requirements.txt
    RUN cd /app/project/assets/ && npm install
    RUN mkdir /app/logs /app/tmp/
    ADD . /app/
    ENV DOCKER 1
    RUN cd /app/project/assets/ && npm run build
    RUN python manage.py collectstatic --noinput -v0
    ADD docker/production/nginx/nginx.conf /etc/nginx/sites-enabled/project
    ADD docker/production/nginx/conf.d/* /etc/nginx/conf.d/
    EXPOSE 80
    view raw Dockerfile hosted with ❤ by GitHub

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:34 п.п., спустя 1 минуту 24 секунды

    Т.е. все в dockerfile абсолютно?

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:36 п.п., спустя 1 минуту 53 секунды

    @AlexB, конечно, в этом и есть смысл контейнеров ;)

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:37 п.п., спустя 1 минуту 7 секунд

    Ну да все как бы стройно выглядит, но писать и отлаживать dockerfile придется долго и нудно ...

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:42 п.п., спустя 5 минут 1 секунду

    Ну да все как бы стройно выглядит, но писать и отлаживать dockerfile придется долго и нудно ...

    @AlexB, ну пару тройку часов на средний файлик ))

    лайфхак - арендуешь сервак и на нем отлаживаешь ;)

    Где канал поширше и проц помощнее)) Думаешь админы серваки быстрее настраивают? У них права на ошибку вообще нет, тут хотя бы кеш есть ;)

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:47 п.п., спустя 4 минуты 10 секунд

    Ну да, админам тоже нелегко. Но мне все-таки IDE родней, а не консоль. ))))) Придется себя заставлять, а то мы сильно конфигурацию обновили на продакшене, и надо разрабам и верстакам срочно новое рабочее место готовить.
    А админа еще одного, на которого можно было бы все это спихнуть уже год ищем безрезультатно.

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:47 п.п., спустя 13 секунд

    @AlexB, а на сервере фигачить жутко удобно вот такой фигней dvddarias/rdocker [github.com]. Вчера нагуглил, хотел было сам писать нечто такое :)

    Спустя 26 сек.

    Ну да, админам тоже нелегко. Но мне все-таки IDE родней, а не консоль. ))))) Придется себя заставлять, а то мы сильно конфигурацию обновили на продакшене, и надо разрабам и верстакам срочно новое рабочее место готовить.
    А админа еще одного, на которого можно было бы все это спихнуть уже год ищем безрезультатно.

    @AlexB, за 200тр в месяц на треть ставки готов я! :)

    Спустя 9 сек.

    Ну это ты и сам знаешь :)

    Сапожник без сапог
  • AlexB

    Сообщения: 4306 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:50 п.п., спустя 3 минуты 8 секунд

    Да нам в офис надо ...
    Удаленный админ у нас есть крутой, но он ели успевает продакшеном занимается. А надо еще на текучку. За 150 не можем найти.

    Спустя 49 сек.

    Ну зато прокачка скилов, хоть и не сильно мной любимых, нет худа без добра

  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Окт. 10, 2016, 8:51 п.п., спустя 1 минуту 30 секунд

    @AlexB, ну можете еще крутого взять за 200 :D

    Сапожник без сапог

Пожалуйста, авторизуйтесь, чтобы написать комментарий!