Evgeniy
George
ну да
George
и собрать его
Evgeniy
ну да
Спасибо. Я думал прямо из compose можно
Evgeniy
А не могли бы подсказать почему такая ошибка? Error response from daemon: the Dockerfile (Dockerfile) cannot be empty?
George
ну, написано же
Evgeniy
но он не пустой
George
а какой?
Evgeniy
а какой?
FROM php:7.3.6-fpm
MAINTAINER PHPtoday.ru <info@phptoday.ru>
RUN apt-get update && apt-get install -y \
docker-php-ext-install mysqli pdo_mysql \
curl \
wget \
git \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
WORKDIR /var/www
CMD ["php-fpm"]
George
команда для сборки какая?
Ivgenich
Ivgenich
А ты попробуй.
Ivgenich
Вот смотри. У меня есть контейнер с hubot, но я хочу добавить еще команд при старте, если я прописываю их в command в компоузе - я ломаю старт. Что я делаю. Сейчас на примере покажу попробую.
Григорий
Привет
Подскажите, если ли какой-нибудь гипотетический способ забрать файл из имейджа не собирая контейнер?)
Ivgenich
Я стартую контейнер и делаю ему docker inspect и вижу следующее.
Ivgenich
RUN: [
"/bin/sh",
"-c",
"node -e \"console.log(JSON.stringify('$EXTERNAL_SCRIPTS'.split(',')))\" > external-scripts.json && \tnpm install $(node -e \"console.log('$EXTERNAL_SCRIPTS'.split(',').join(' '))\") && \tbin/hubot -n $BOT_NAME -a rocketchat"
]
Ivgenich
Т.е. это команда, чтобы поднялся сам hubot, если я в компоузе напишу command только со своей командой - я сломаю старт бота. Значит надо их объединить в самом компоузе. Т.е. команд будет выглядеть так.
Ivgenich
command: [
"/bin/sh",
"-c",
"твоя_команда && node -e \"console.log(JSON.stringify('$$EXTERNAL_SCRIPTS'.split(',')))\" > external-scripts.json && \tnpm install $$(node -e \"console.log('$$EXTERNAL_SCRIPTS'.split(',').join(' '))\") && \tbin/hubot -n $$BOT_NAME -a rocketchat"
]
George
Ivgenich
Ну или твоя_команда в конце или как угодно. Не забываем заменить $ на $$ если используются переменные, потому что одинарные попытается обработать сам compose и упадет.
Evgeniy
А ты попробуй.
Я через Dockerfile решил попробовать. И вот такой итог((
George
написано же
George
тебе надо доустановить mcrypt - вероятно через апт
George
https://linuxconfig.org/how-to-install-mcrypt-php-module-on-ubuntu-18-04-linux
Evgeniy
Ivgenich
https://www.techrepublic.com/article/how-to-install-mcrypt-for-php-7-2/
Ivgenich
Прочитал внимательнее исходную проблему. Не делай как я посоветовал. В данном случае это не правильный подход. Надо править докерфайл и собирать. Это верный путь в данной ситуации.
George
George
но требуется быть очень аккуратным в любом случае
Ivgenich
Ну в данном случае образ лучше пересобрать. Иначе у него при каждом рестарте будут модули доустанавливаться и время отнимать.
George
согласен
George
это основной консерн
Max
Ставлю в докерфайле убунту 18 и
python3 \
python3-dev \
python3-pip \
python3-setuptools \ , в pycharm получаю
Max
Max
как так ? питон 2.7 не ставил
George
так там по дефолту наверняк пихтон2
George
проверь which python, python -V
Max
George
опыт не пропьешь (с)
Oleg
Привет всем! Вопрос на засыпку - куда пихать node_modules, в image или в volume? если эт вдруг разгорится в холивар - прошу прощения, прост мне нужно компетентное мнение)
George
от ситуации зависит
George
скорее всего НЕ ТУДА и НЕ ТУДА
George
а пускай живут на хосте, где сборка проводится
Oleg
но я ж не буду сборку на продакшне делать, верно?) я просто потом на прод спуллю image с хаба
George
вариантов много. Опиши как пайплайн сборки у тебя сейчас работает
Oleg
да на самом деле пайплайна нет, в проекте уже сделано всё не мной и просто спор зашёл на тему куда. челики собирают прод прямо на проде. я б так не делал, но что есть то есть
George
нет, не надо прод на проде
Alexander
Всем добрый день!
Тут возник ещё один вопрос: как правильнее накатывать миграции сервака на Node.js без оркестратора при деплое?
Всё крутится на одном сервере, в контейнерах, деплой идёт с помощью Ansible через CI.
Просто не хочется пихать запуск скрипта в CMD докерфайла, а то когда-то читал, что из-за шелл скрипта бывают периодически косяки в контексте обработки процессов
Oleg
George
George
если у тебя всего лишь один инстанс контейнера - ну, ок, засунь все в docker-entrypoint.sh, в котором логически сначала идут миграции, а потом вызов твоего node.js сервера
George
делов-то
George
все становится сложнее, если у тебя может быть несколько инстансов - без автоматизированного процесса деплоя тебе не обойтись. Будь то докер-компоуз с хелсчеками, мейкфайл, баш-простыня или плейбук на ансибле
George
это уже не столь принципиально
Oleg
Да, спасиб огромное
Alexander
George
ну, будут моменты с этим
Alexander
George
первый - что тебе хелсчеку придется ставить стартовый интервал, который больше миграций, чтобы они не зафейлились
George
второй - exit code & pid - скорее всего проблем не вызовут
George
но все зависит от того как entrypoint скрипт напишешь
George
если совсем боязно - ну, выдели миграции в отдельный контейнер, в конце-концов
George
https://habr.com/ru/post/454552/
George
полистай комменты
Alexander
Спасибо!
И да, не хотел сайд контейнер для этого поднимать)
Spirit
господа, добрый вечер
Spirit
в общем, сидел я никого не трогал. база крутилась в контейнере докера. вдруг откуда ни возьмись, появились лаги. а потом и вообще отвалился коннект к базе у джанги. докер запущен локально, в маке.
docker ps: 0.0.0.0:3306->3306/tcp показывает, что порты в норме. ничем к базе не могу подключиться в этот контейнер
Spirit
кудой копать?
simplemice.eth
для начала в docker logs а потом в бар.... пятница на дворе
Spirit
Spirit
а шаббат после 19 часов вроде
Spirit
Dmytro 🇺🇦
Dmytro 🇺🇦
Spirit
Spirit
не подключается