Ответы пользователя по тегу Docker
  • Как редактировать файла в docker образе перед его исполнением?

    @de1m
    Ну это разве ужасно, ужасно это когда в команде пять строк комманд.
    А вообще, если образ ваш, то сделайте переменную, чтобы в ней делать изменения. Если же образ не ваш, то тогда только командами, можно ещё примонтировать скрипт и командой выполнять его.
    Ответ написан
    Комментировать
  • Как сделать github CI/CD на VPS для node.js?

    @de1m
    Вы неправильно кошку готовите.
    Пункт три надо делать пассивно, то есть включаете интерграция с github'ом в docker hub и потом можно создавать "Automated build". При каждом пуше будет создаваться образ.
    Скриптом ниже можно проверять существует ли образ:
    function docker_tag_exists() {
        curl --silent -f -lSL https://index.docker.io/v1/repositories/$1/tags/$2 > /dev/null
    }
    
    if docker_tag_exists library/nginx 1.7.5; then
        echo exist
    else 
        echo not exists
    fi
    Ответ написан
    3 комментария
  • Как эффективно использовать Docker + Docker-compose при разработке?

    @de1m
    Как-то вы не очень разобрались.
    Выкиньте "networks:". В вашем случае он не нужен.
    Добавте "ports", там где вы хотите пользоваться пользоваться сервисом. К примеру в postgresql контейнере.
    Вот этот файл ".env" выкиньте его тоже, если у вас не много переменных впишите их так.

    Вообще делать контейнер для не доконца работающей программы слысла нет. Можно поднять базу данных и всякие вдругие сервисы, а саму программу запускать локально и пусть она обращается к тому, что крутся в контейнерах. Когда будет готова первая версия, её можно уже будет завернуть в контейнер.
    Ответ написан
    Комментировать
  • Как сделать отдельный приватный порт для express в docker?

    @de1m
    Если вы подразумеваете, что надо, чтобы другие контейнеры могли заходить на этот порт, то их надо линковать, либо можно сделать совместную сеть для них. Вот тут описано, как надо делать. Это для docker-compose написано, если что.
    Ответ написан
    Комментировать
  • Как настроить firewall для Docker?

    @de1m
    Вы неправильно кошку готовите, для общения между контейнерами вам не нужно создавать порты к хосту. Посмотрите вот тут, это для docker-compose
    Ответ написан
    Комментировать
  • Как увидеть node_modules "снаружи" контейнера Docker?

    @de1m
    Надо на один уровень выше монтировать

    volumes:
      - ../app:/src/app


    Может надо вместо ".." папку написать.
    Ответ написан
    Комментировать
  • Как правильно использовать docker в разработке node.js ( отладка)?

    @de1m
    я использую для этого supervisord. В описание много написано, но на деле надо только сделать две вещи:
    1.
    npm i --save supervisor
    2. Добавить в package.json
    "scripts": {
        "test": "node_modules\\\\.bin\\\\supervisor index.js",
        "start": "node index.js"
      },

    Это путь в линуксе.
    3. Запускать с
    npm test
    Ответ написан
    Комментировать
  • Стоит ли использовать Docker на продакшене?

    @de1m
    У нас пять серверов в hetzner и несколько больших во внутреней сети, на них на всех крутяться контейнеры для разных вещей(mysql, mssql, bind, openvpn, etc). Начали со всем этим, где-то года три назад. Проблемы были, но небольшие и они уже исправлены, последние где-то месяцев 10 я ничего не вспомню.
    Если вы хотите CI/CD, то смотрите в сторону kubernetes. Его главный плюс, что можно всем управлять через API. Мы к этой идеи тоже пришли и я буквально неделю назад закончил установку kubernetes'а на трех серверах у hetzner и начал туда переводить наши сервисы.
    У докера я вижу два главных преимушества:
    1. Очень чёткое разделение между данными и системой. Выводишь нужные данные на volumes и делаешь с них бэкапы. Если сервер сгорел, заливаешь образы для docker'а и накатываешь данные и готово.
    2. Повторяемость окружения.
    Ответ написан
    1 комментарий
  • Как исправить ошибку при запуске docker и какой пароль используется в контейнере ubuntu-upstart?

    @de1m
    Там на последней картинке написано, что не найден ssh ключ и вообще у вас куча ошибок, как я понял, кто-то не может присоединиться к докеру, может быть поможет от администратора это всё запустить.
    Ответ написан
  • Какие технологии лучше использовать для HA кластера?

    @de1m
    Непонятно, что у вас имеется ввиду под подсистемами - у вас в каждой получается 4 сервера?

    Для галеры нужно три сервера, на двух будет работать до следующего перезапуска сервера, у меня во всяком случае так было.
    Для ваших "nginx + php + nodejs + мелкие штуки для очередей, тасков и так далее" нужно общедоступное место, где все узлы смогут хранить свои данные. Я бы посоветовал cephfs. Я с ней уже работаю второй год, проблем небыло.
    Чтобы было "Цель: быстрое и простое развертывание и администрирование." нужно делать обязательно с докером. Если ко всему этому добавите ещё и kubernetes, то будет лучше, но надо будет для начала разобраться. В kubernetese есль свой load balancer. Немогу правда сказать, насколько он хорош. Так же можно выставлять количество реплик и в целом ещё куча полезных вещей.
    Ответ написан
    Комментировать
  • Используете ли вы виртуализацию для более удобной работы с несколькими проектами?

    @de1m
    По вам прям докер плачет, он как раз для токого и сделан. Понемаю, что так сразу не ясно, как это всё использовать.
    Я вам объясню на примере, вот это пример. В контейнере находится программа которая запускается по крону. В образе уже всё есть кроме трёх вещей - конфигурации крона, ssh ключа и конфигурации для самой программы(которая уже находится в образе).

    То есть как видно, там идёт чёткое разделение между системой и данными. Система и программы уже готовы, но им для работы нужны данные которые я им добавляю когда запускаю контейнер из этого образа.

    Обратите внимание на файл "docker-compose.yml" (для его использования помимо докера нужен так-же docker-compose) в нём описывается, как должен запускатся контейнер.
    volumes:
        - /nodejs/nodebackup/config.yml:/nodebackup/config.yml
        - /nodejs/nodebackup/id_rsa:/nodebackup/id_rsa
        - /nodejs/nodebackup/crontab.tmp:/crontab.tmp

    Volumes говорит, какие данные я хочу добавить из моего хоста в контейнер. То есть тут как раз находятся эти три файла, про которые я писал. Можно добавлять не только файлы, но и папки.

    В вашем случае вам надо взять контейнер, в котором есть питон, либо сделать самому и при запуске контейнера сказать, что хотите папку с вашим проектом примонтировать в определённое место в контейнере.

    В плюсе получется, что вам не надо нечего делать на хосте, кроме установки докера. При бэкапе нужно сохранять только данные, если проект находится в гите, то даже его ненадо сохранять.
    Ответ написан
    1 комментарий
  • Как вынести конфигурацию postgres в подключаемый том docker?

    @de1m
    У меня было похожее с "mysql". Тут есть пять решений:
    1. Использовать официальный контейнер, может там это проблема уже решена и через линкование соединить его с тем где вам нужен postgres
    2. У вас уже есть готовый конфиг и вы его закидываете во время создания контейнера через "COPY" или "ADD"
    3. Сделать скрипт (Поместить в ENTRYPOINT) который будет проверять определённую папку. Если папка есть и она пустая, то копируте туда конфиг и стартует postgres с него, если папки нету, то стартует с оригинального конфига. Получиться, что при сборке он будте использовать оригинальный конфиг, а при старте надо будет смонтировать папку (которая будет проверяться в скрипте). Скрипт скинет туда конфиг и будет его использовать для следующих стартов. Посмотрите вот этот проект (run.sh), но там ад. Там ещё куча других вещей для mysql и icinga.
    4. Использовать "sed" и поменять/добавить нужные настройки в /etc/postgresql/9.5/main/postgresql.conf
    5. Если у вас нету каких-то особых настроек, то нафига его тогда трогать
    Ответ написан
    Комментировать
  • Как вы используете docker для разработки в Windows?

    @de1m
    Это давняя проблема в virtualbox'e. Когда происходит обращение к папки, то он замирает. Я эту фигню ещё с третьей версии наблюдаю, хотя раньше намного выраженее была.

    Я не знаю как вы создаёте виртуалку, я пользуюся для этого "vagrant" у него можно вместо sharedfolder использовать rsync (тут), но я не знаю делает ли он синхронизацию только при старте или при каждом изменении содержимого папки.

    Можно так-же тупо монтировать шару с винды в виртуалку через "cifs"
    Ответ написан
    Комментировать