сергей кузьмин, Сергей, спасибо за совет, я пока попробую все сделать средствами докера и не городить лишние серверы, если не получиться, буду пробовать ваш вариант.
Сергей Соколов, Понял, спасибо, буду завтра пробовать все переделать.
В целом у меня контейнер с php-fpm и постргрес собираются именно через докерфайл.
Изначально все было спланировано именно так, что каждый контейнер собирается через докер файл, структура файлов и папок для всей сборки тоже была изначально так и организована, но потом с этой выкачкой файлов все встало и начались эксперементы и все пошло по ....
chupasaurus, Ну так энтрипоинт же запускается каждый раз при запуске контейнера? Если так, то зачем мне каждый раз качать файлы и делать инстал, мне это надо сделать раз при создании всех контейнеров либо дальше уже когда будет делаться комит на гитхабе, но это отдельная история и я к ней дойду позже.
Кроме этого, по моему я уже пробовал через него запускать, да и проблем с запуском то нет, проблема в том, что как я понял, после запуска например того же композа, он начинает качать, работая дальше т.к. получается запустился и тарахтит, т.е. а мне надо после того как закачает все файлы, либо запустить еще один контейнер который уже сделает билд, либо в этом же запустить билд когда файлы все точно докачены.
chupasaurus, А можно подробнее? Что именно туда и без вариантов это не будет работать или именно туда и надо? :) Как я понимаю, энтрипоинт это то, что выполняется при запуске контейнера каждый раз.
Все, понял, создаем директорию, запускаем выкачку, как выкачалось удаляем.
на втором контейнере пока есть папка/файл, то ждем.
Тоже вариант, думаю куда сунуть это создание и удаление файла.
Ибо через RUN не работает, точнее работает, но пока в файлы в фоне качаются он смело переходит к следующим шагам RUN. C CMD тоже не вариант, оно как я понял может выполняться только раз уже после билда.
Владимир Куц, Либо я не понимаю либо вы не поняли проблему :)
компосер сам выкачивает все что написано в фале composer.json
Этот процесс я не хотел бы менять. я не могу создавать каждый раз десятки папок, в них выкачивать все внешними скриптами. Или я не так понимаю ваше предложение?
Так пока образ билдится, выполняя все что там в Dockerfile, он не считается запущенным, и не стартуют зависимые от него (depends_on) следующие сервисы.
У меня получается образ сбилделся и в конце запускается команда, поэтому не работает depends_on.
тут сразу при сборке он запускает инстал и читает файлк в директории проекта тот самый composer.json и все начинает с него ставить. Когда все сборки в докер композе отрабатывают, далее выполняется следующий шаг в баш скрипте который запускают миграцию бд. В файле стоит слип на овер дофига времени, чтоб дождаться выкачки всех файлов.
Криво, но пока только так нашел решение.
Что же касается NPM то тут так
encore:
build:
context: ./encore
dockerfile: Dockerfile-encore
container_name: encore
volumes:
- ../projectdir:/projectdir
ports:
- "8080:8080"
working_dir: /projectdir/ command: npm install
depends_on:
- composer
Тут он команду выполняет по установке всего что лежит в package.json т.е. начинает выкачивать.
чтоб запустить сборку выкачанного, я делаю отдельный контейнер.
encore_build:
image: node
container_name: encore_build
volumes:
- ../projectdir:/projectdir
ports:
- "8081:8081"
working_dir: /projectdir/
command: >
/bin/bash -c "
sleep 300; npm run build;
"
depends_on:
- composer
- encore
- web
- php
- postgres
Тут после опять же слипа выполняется билд, ну и ниже этой комманды уже пробы с depends_on.
которые бесполезные.
Здорово, тоже думал о таком варианте, но есть одно но, разработчик в процессе работы может добавлять/удалять модули и я не могу все их определить в файле старта сервисов в touch
Они будут динамически меняться.
А вот использовать вторую часть я в принципе могу ибо я точно знаю что нужно для миграции бд(какой конкретно файл).
Что то я туплю наверное, каким именно образом вы предлагает это сделать скрипотм? Эмулировать работу мыши и кликов? :)
Правильный вариант я вижу такой, обращение на какой то сервер сбера по API, авторизация и далее посредством запроса по API выдергивать данные.
Пума Тайланд, Посмотрел, вижу получение выписки в ручную, т.е. надо зайти, ткнуть и получить файл, я же ищу способ сделать это автоматически т.е. мой сервер заходит куда то, авторизируется по паролю или сертификату и выгружает эту выписку сам, делает это сам раз в час, в день, в месяц. Ручная обработка этого процесса всегда имеет проблему человеческого фактора, мне нужно это исключить и максимально автоматизировать весь процес разноса информации о поступивших средствах на счет. Грубо, у нас свой юилинг и нужно чтоб в него максимально в короткие сроки поступала информация про проведеных платежах на наш расчетный счет.
С экварингом понятно, но это отдельная у них услуга т.е. нельзя получить комплекстного решения, чтоб и данные по счетам получать и оплаты принимать. Хотелось бы все сразу получит ьв одном пакете так сказать. В любом случае спасибо за ответ.
Да у вас там ценник конский, дороже чем пойти и справочку в бти взять. Учитывая, что мне надо по тысячам домов взять данные, то я разорюсь. Делайте какой нибудь особый тариф, с помесячной оплатой и тогда будет интереснее.
Я прекрасно понимаю ,что можно сделать разными способами, но преподаватель в институте поставил именно такую задачу, использовать Redis. А пока, из всего что пробовал, процесс планирует занять недели времени на обработку, и мне с этим никак не хочется мириться.
Никак, поэтому с яндекс деньгами так и не работаем, хотя ничего не мешает им работать по точно такой же схеме и безопасность никак не страдает. Все что нам например нужно, это компания, которая бы имела единый апи для подобной работы без зашгрузки формы, сама бы работала как посредник и напрямую делала бы платежи уже в теми же ЯД или другими платежными системами.
Ну не совсем так, к примеру касаемо карт, тут подгружается форма с банка, а например оплата киви или другие кошельков может проводиться и на нашей стороне, к примеру на киви выставляется счет, клиент его оплачивает. Варианты бывают разные и были и работали, но завернули ласты по неизвестным причинам.