Dan
а наоборот тоже работает: docker cp filename.txt 4f20e373e04b:/usr/local
Леннарт Zh 🕊
скопирует файл httpd.conf из контейнера 4f2 на локальную машину
я даже про разницу между ADD и COPY отвечал когда-то на собесах
A.D.🈴
Ну только не по айди, я через докер-компоуз работаю. :)
Dan
я даже про разницу между ADD и COPY отвечал когда-то на собесах
что же ты тогда вопросы задаёшь как вытащить файл из контейнера?
Леннарт Zh 🕊
Пользуюсь этим методом, все прекрасно работает. :)
я разве написал что не работает? я сам так делаю. Просто в истории потом выглядит неочевидно/некрасиво
Dan
Ну только не по айди, я через докер-компоуз работаю. :)
все так работают. ну почти. вообще волюмы есть
Dan
и ансибыл
Леннарт Zh 🕊
что же ты тогда вопросы задаёшь как вытащить файл из контейнера?
не вытащить, а схоронить, желательно автоматизированно (сорс контроль, хуки)
Dan
эталонный диалог
A.D.🈴
все так работают. ну почти. вообще волюмы есть
Ну мне, кажется, именно здесь и сказали, что не надо пхп.ини править в контейнере :)
Леннарт Zh 🕊
Ну мне, кажется, именно здесь и сказали, что не надо пхп.ини править в контейнере :)
у меня проблема в том, что кроме контейнера этого похапэ.ini сейчас нет больше НИГДЕ, кроме образа докер-хоста недельной давности. работающее решение, которое мне предложили - делать коммиты и кидать их в гит - мне тоже не нравится
Леннарт Zh 🕊
Окей. Тебе надо один раз это сохранить? Или организовать инкрементальный бэкап и версионность?
второе я за то, чтобы править в гите и после каждого пуша контейнер пересоздавать (плавно перенося нагрузку в новый). но кубера/шифта нет и пока не предвидится
Dan
тебе нужен githooks
Dan
накурись документации, и будешь автоматом ребилдить контейнер после каждого пуша
Леннарт Zh 🕊
тебе нужен githooks
мне нужна готовая работающая схема. В теории я всё и так знаю. и про пост-коммит хуки и про ansistrano/deploy/rollback
Dan
либо пиздуй в документацию и пиши свою
Dan
:D
Dan
https://githooks.com/
Dan
там вообще ничего сложного
Леннарт Zh 🕊
напишу тебе готовую рабочую схему за 5000 рублей
недорого кстати, если с учётом набитых при внедрении шишек и бошек
Леннарт Zh 🕊
https://githooks.com/
спс. вроде читал
Dan
на гитхабе есть тонны примеров. погугли, поищи. точно уже решали твою задачу миллиард раз
Dan
но пожалуйста, очень прошу, не надо sshfs :)
Dan
/me ушел ковыряться в говнокоде
Леннарт Zh 🕊
на гитхабе есть тонны примеров. погугли, поищи. точно уже решали твою задачу миллиард раз
напиши что именно гуглить, а то как мама моя "ты же уже взрослый, сынок, чё ты меня спрашиваешь - можешь сам в интернете посмотреть!"
Леннарт Zh 🕊
Алекс
ребят, привет, пытаюст запустить node js приложение в режиме разработки в докере но постоянно получаю ошибку docker-compose: version: "2" services: mysql: image: mariadb container_name: mariadb ports: - "3307:3306" volumes: - ./mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: secret nginx: image: nginx:latest container_name: nginx ports: - "8000:80" volumes: - ./nginx:/etc/nginx/default.conf - ./logs:/var/log/nginx - ./www:/var/www restart: unless-stopped links: - app app: build: context: . dockerfile: ./images/nodejs/Dockerfile container_name: nodejs restart: always environment: NODE_PATH: "." NODE_ENV: "development" command: npm run dev volumes: - ./app:/var/www - node_modules:/home/node/app/node_modules ports: - 8091:3000 links: - mysql depends_on: - mysql volumes: node_modules: error: nodejs | > app@0.3.1-6.3 dev /var/www nodejs | > gulp dev nodejs | nodejs | [02:25:27] Local modules not found in /var/www nodejs | [02:25:27] Try running: npm install nodejs | npm ERR! code ELIFECYCLE nodejs | npm ERR! errno 1 nodejs | npm ERR! app@0.3.1-6.3 dev: `gulp dev` nodejs | npm ERR! Exit status 1 nodejs | npm ERR! nodejs | npm ERR! Failed at the app@0.3.1-6.3 dev script. nodejs | npm ERR! This is probably not a problem with npm. There is likely additional logging output above. nodejs | npm WARN Local package.json exists, but node_modules missing, did you mean to install? nodejs | nodejs | npm ERR! A complete log of this run can be found in: nodejs | npm ERR! /root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log nodejs exited with code 1 mariadb & nginx работают нормально не могу понять как исправить и куда копать Local modules not found - модули стоят, при сборке устанавливаются - это видно при сборке /root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log - как сюда зайти ума не приложу, оно же в контейнере, а при остановке все удаляется, подскажите если знаете, как посмотреть
Артём
ну лог глянуть можно через docker cp <контейнер>:/root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log ./ даже если контейнер остановлен
Артём
модули то точно в /var/www устанавливаюся а не в /var/www/node_modules?
Артём
прост волюм то какб - node_modules:/home/node/app/node_modules
Алекс
ну лог глянуть можно через docker cp <контейнер>:/root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log ./ даже если контейнер остановлен
docker cp nodejs:/root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log ./ Error: No such container:path: nodejs:/root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log docker cp 7fdae629a08d:/root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log ./ Error: No such container:path: 7fdae629a08d:/root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log
Anonymous
ребят, привет, пытаюст запустить node js приложение в режиме разработки в докере но постоянно получаю ошибку docker-compose: version: "2" services: mysql: image: mariadb container_name: mariadb ports: - "3307:3306" volumes: - ./mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: secret nginx: image: nginx:latest container_name: nginx ports: - "8000:80" volumes: - ./nginx:/etc/nginx/default.conf - ./logs:/var/log/nginx - ./www:/var/www restart: unless-stopped links: - app app: build: context: . dockerfile: ./images/nodejs/Dockerfile container_name: nodejs restart: always environment: NODE_PATH: "." NODE_ENV: "development" command: npm run dev volumes: - ./app:/var/www - node_modules:/home/node/app/node_modules ports: - 8091:3000 links: - mysql depends_on: - mysql volumes: node_modules: error: nodejs | > app@0.3.1-6.3 dev /var/www nodejs | > gulp dev nodejs | nodejs | [02:25:27] Local modules not found in /var/www nodejs | [02:25:27] Try running: npm install nodejs | npm ERR! code ELIFECYCLE nodejs | npm ERR! errno 1 nodejs | npm ERR! app@0.3.1-6.3 dev: `gulp dev` nodejs | npm ERR! Exit status 1 nodejs | npm ERR! nodejs | npm ERR! Failed at the app@0.3.1-6.3 dev script. nodejs | npm ERR! This is probably not a problem with npm. There is likely additional logging output above. nodejs | npm WARN Local package.json exists, but node_modules missing, did you mean to install? nodejs | nodejs | npm ERR! A complete log of this run can be found in: nodejs | npm ERR! /root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log nodejs exited with code 1 mariadb & nginx работают нормально не могу понять как исправить и куда копать Local modules not found - модули стоят, при сборке устанавливаются - это видно при сборке /root/.npm/_logs/2021-03-11T02_25_27_026Z-debug.log - как сюда зайти ума не приложу, оно же в контейнере, а при остановке все удаляется, подскажите если знаете, как посмотреть
а зачем тебе ьам полноценный volume под модули? Обычно это от непонимания. В чём задумка?
Алекс
а зачем тебе ьам полноценный volume под модули? Обычно это от непонимания. В чём задумка?
https://www.digitalocean.com/community/tutorials/containerizing-a-node-js-application-for-development-with-docker-compose-ru ПУНКТ 4
Артём
Артём
а, вижу
Алекс
id контейнера укажи
там оба варианта и имя и ID
Алекс
Еще почему то при сборке имеджа не работает npm i только npm install работает, то есть полная запись
Алекс
костылем непонятным выглядит
ну это типа туториал
Anonymous
мб для ускорения сборки. что бы по 10 раз не выкачивать их
при каждом билде образа оно будет выкачиваться
Алекс
при каждом билде образа оно будет выкачиваться
а как тогда правильно? ну чтобы раз выкачал и закэшировал, а когда изменилось докачал при сборке
Артём
при каждом билде образа оно будет выкачиваться
ну хз, мы при автосборке просто монтируем уже скачанные модули и npm run след шагом, а у нас их под 6к. Сборка чуть ли не в 2 раза быстрее чем если предварительно npm install делать
Anonymous
ну это типа туториал
копипасть из туториалов внимательней: ``` volumes: - .:/home/node/app - node_modules:/home/node/app/node_modules ``` а у тебя?
Алекс
копипасть из туториалов внимательней: ``` volumes: - .:/home/node/app - node_modules:/home/node/app/node_modules ``` а у тебя?
Заработал app! )))) БОльшое спасибо! ток порт надо поправить, а то не коннектиться к бд..
Артём
да, один раз npm i, ну а там по мере необходимости для разрабов их обновляем
Алекс
да, один раз npm i, ну а там по мере необходимости для разрабов их обновляем
понял, возьму на заметку, а то сборка очень долгая локально, а на сервере боевом еще дольше будет
Алекс
1,59 гига - размер образа, без оптимизаций..
Артём
понял, возьму на заметку, а то сборка очень долгая локально, а на сервере боевом еще дольше будет
можешь ещё "multi-stage builds" делать, чтобы в последнем образе онли вебсервер да проект был к примеру. Образа весят тогда итоговые куда меньше и при обновлении не захламляют сервер
Алекс
у меня в папке public лежат файлы статические, постоянные, я так понимаю ее тоже надо подключать как внешнюю папку?
Артём
https://habr.com/ru/post/349802/
Anonymous
вру, COPY
в 20.10 вроде вывели из эсперимента возможность монтировать при билде, каталоги с кэшами в том числе, но по доке сейчас быстро не могу найти - похоже так ее и не обновили за несколько месяцев
Алекс
можешь ещё "multi-stage builds" делать, чтобы в последнем образе онли вебсервер да проект был к примеру. Образа весят тогда итоговые куда меньше и при обновлении не захламляют сервер
да, я видел туториал, буду делать потому что у меня 2 версии - прод и дев и запускаются по разному + деплоятся в гитлабе по пушу в мастер и дев ветки
Алекс
Ребят, еще вопрос по подключению к бд, собственно выдает мне Error: connect ECONNREFUSED 127.0.0.1:3306 я так понимаю раз приложение и бд это разные контейнеры, то приложение не получит доступа к бд при подключении к 127.0.0.1:3306 а как тогда подключиться то? пробовал указать networks: app_net: driver: bridge но так тоже не работает..
Алекс
Если я правильно понимаю доку, то driver: bridge делает контейнеры в одной сети, то есть должен быть доступ по 127.0.0.1:3306
Anonymous
каждый контейнер как отдельный сервер и 127.0.0.1 у каждого свой
Алекс
не должен, должен быть по имени сервиса в композе
да, точно.. забыл про это только у меня данные коннекта к бд в приложении в json конфиге лежат как тогда быть то?
Артём
все конфиги обычно выносятся
Anonymous
волюм
что волюм тут даст? бинд маунт тогда уж
Алекс
переписать на получение из env переменных или маунтить с хоста
там 2 конфига - один для деплоя на прод, второй на дев, оба в json формате + в конфигах еще куча других настроек прод работает под pm2, дев работает под nodemon - я так понимаю мне pm2 при использовании докера не нужен? контейнер и так будет автоматом перезапускаться в случае ошибок кроме env других вариантов нету? а то выходит что два конфига бд(прод и дев) в 2 местах будут
Алекс
блин, дичь какая то, указал в environment для app DB_HOST: mysql - а внутри в приложении все равно в process.env.DB_HOST 127.0.0.1:3306
Алекс
может .env файл с более выскои приоритетом?
не, нету ENV файла. просто пока в docker-compose прописал переменные а в скрипте коннекта к бд принудительно поставил process.env.DB_HOST