Alexey
убрал
Денис
убрал
попробуй
Alexey
вообще убрать? никакой драйвер не прописывать?
Денис
Alexey
не вижу особенных измененй http://prntscr.com/qa1y2i
Alexey
http://prntscr.com/qa1yit
Денис
не вижу особенных измененй http://prntscr.com/qa1y2i
так и живи и будет все хорошо
Alexey
хорошо не стало :)
Денис
http://prntscr.com/qa1yit
базу не резолвит?
Денис
хм
Alexey
ага
Денис
ага
а покажи docker ps
Alexey
http://prntscr.com/qa1zth
Денис
http://prntscr.com/qa1zth
поменяй в конфиге дб базу на просто postgres_testing
Денис
конфиге дб - всмысле у приложения
George
а ты думал о том, что имя контейнера != имя сервиса?
George
в смысле - имся сервиса - это то что ты задаешь в компоузе
George
а имя контейнера - то что автогенерит докер компоуз
George
и надо обращаться именно по имени сервиса
Денис
и надо обращаться именно по имени сервиса
я выше именно это и написал. ты решил подробно рассказать? :)
George
я просто по диагонали читаю ) сорри
Alexey
http://prntscr.com/qa22cu
Денис
http://prntscr.com/qa22cu
Любопытно
George
у тебя постгрес то вообще стартанул?
George
как бы нет контейнера - нет днса. это логично
George
хотя и криво
Gleb
@gecube с sysctl в докере вообще эпичная история https://github.com/moby/moby/issues/30778
Артем
Я в 20 лег
Pavel
Ребята помогите разобраться Есть пхп проект скажем в папке myproj запускаю через docker-compose php-fpm nginx каждому примонтирован локальная папка myproj: /var/www/app myproj: /var/www/app права на эту папку от текущего обычного судо пользователя и тут вдруг выясняется что внутри докера процессы запускаются для NGINX от пользователя nginx для php-fpm от пользователя www-data и у них нет прав на эту папку обычно как правильно надо натсроить?
Pavel
я думал что в докере все запускается от рута и него на все есть права, а оказыается только команды шел запускаются от рута, а вот процессы видимо завивист как Автор образа задумал
Pavel
на nginx нужен доступ к папке myproj/public для статичных файлов
Vlad
на nginx нужен доступ к папке myproj/public для статичных файлов
выстави их в Dockerfile через chmod и внутри образа будут права на папку
Pavel
выстави их в Dockerfile через chmod и внутри образа будут права на папку
я тут немножно оказывается не понимаю как связаны внутриконтейнерные пользователи с системными пользователями
Pavel
даю права внутри контейнера php-fpm запускаю баш внутр контейнера chown -R www-data:www-data . и выхожу из контейнера и вижу что права на папку действительно поменялись на www-data в системе вроде есть пользователь www-data ну и ладно теперь у пхп нет проблем запускается а вот NGINX нет доступа с папке public т.к. он теперь www-data
Pavel
папка то общая на самом деле, примонтированы
Ярослав
Можете пожалуйста подсказать. Ситуация такая, Jenkins должен прогнать e2e тесты на фронтенд, перед этим нужно запустить всю систему, поднять контейнеры, !!залить дамп в базу!! и потом уже запускать остальные сервисы и начать гонять тесты. Проблема начинается на стадии заливания дампа в базу. Bash скрипт сначала билдит все образы TAG=test docker-compose -f ../app/docker-compose.test.yml build Потом поднимает только сервис бд TAG=test docker-compose -f ../app/docker-compose.test.yml up -d db После идёт sleep 10 (как бы жду инициализации базы) После чего копирую дамп в контейнер docker cp dump_for_test.sql app_db_1:/ Заливаю в БД TAG=test docker-compose -f ../app/docker-compose.test.yml exec -T db psql -d hrmdb -U user -f dump_for_test.sql Поднимаю все остальные сервисы TAG=test docker-compose -f ../app/docker-compose.test.yml up -d А дальше уже прото тесты гоняются Так вот стадия TAG=test docker-compose -f ../app/docker-compose.test.yml exec -T db psql -d hrmdb -U user -f dump_for_test.sql какая-то нестабильная
Ярослав
Я поставил Jenkins на ночь каждый час гонять билды Вот результат: 53 - psql: FATAL: database "hrmdb" does not exist 58 - psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/ postgresql/.s.PGSQL.5432"? 60 - psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/var/run/ postgresql/.s.PGSQL.5432"? 62 - psql: FATAL: the database system is starting up 64 - psql: FATAL: database "hrmdb" does not exist 65 - psql: FATAL: database "hrmdb" does not exist
Ярослав
xD
Ярослав
6 билдов успешны из 14, и затык происходит на стадии работы с сервисом db Очень странно для меня, то базы в контейнере не существует, то какие-то проблемы с сокетом, Но при этом бывает и всё хорошо, за один период времени. Кто-нибудь подскажет как можно избежать этой нестабильности? перед заливанием дампа в базу sleep на подольше поставить? 10 секунд это мало?))))
Andrey
за 10 секунд возможно база и не стартанула. Используй в docker-compose healthcheck для проверки работоспособности базы, и после этого вливай дамп. Загрузку дампа так же сделай в самом композе файле
Andrey
mongo: image: mongo:${MONGO_TAG} ports: - "127.0.0.1:${MONGO_PORT}:${MONGO_PORT}" environment: TZ: "Europe/Moscow" healthcheck: test: echo 'db.stats().ok' | mongo ${MONGO_HOST}:${MONGO_PORT}/test --quiet interval: 3s timeout: 5s retries: 5 mongo-populate: image: mongo:${MONGO_TAG} volumes: - ${PWD}/dump/:/backup/dump/:ro environment: TZ: "Europe/Moscow" command: bash -c "mongorestore --drop --host ${MONGO_HOST}:${MONGO_PORT} --gzip /backup/dump" depends_on: mongo: condition: service_healthy Ну вот как то так у меня реализовано но с монгой, делай аналогично с постгресом
Ярослав
mongo: image: mongo:${MONGO_TAG} ports: - "127.0.0.1:${MONGO_PORT}:${MONGO_PORT}" environment: TZ: "Europe/Moscow" healthcheck: test: echo 'db.stats().ok' | mongo ${MONGO_HOST}:${MONGO_PORT}/test --quiet interval: 3s timeout: 5s retries: 5 mongo-populate: image: mongo:${MONGO_TAG} volumes: - ${PWD}/dump/:/backup/dump/:ro environment: TZ: "Europe/Moscow" command: bash -c "mongorestore --drop --host ${MONGO_HOST}:${MONGO_PORT} --gzip /backup/dump" depends_on: mongo: condition: service_healthy Ну вот как то так у меня реализовано но с монгой, делай аналогично с постгресом
Я так понимаю что тут у вас один сервис зависит от другого и healthcheck работает как тригер для другого сервиса что можно бы уже и запускаться Но у меня наверное немного другая ситуация, тесты запускаются "вне" контейнеров, контейнеры просто поднимают приложение, но базу мне нужно загрузить первой иначе к ней начнут подключаться другие сервисы и уже выгрзить в неё будет проблематично, начнёт зависать просто.
Ярослав
Я вот такую чекалку нашёл, как считаете, сойдёт?)
Andrey
ну Вам же импорт в базу надо сделать после того как база запустится. Так что как раз это Ваш вариант
Andrey
Должна сойти, но выглядит как то костыльно больно
Andrey
https://gist.github.com/zhunik/3f3087d5982bcf0297ab23ebaeb46bc1
Ярослав
Хммм... Ну вот смотрите я запускаю через компос сервис с базой отдельно TAG=test docker-compose -f ../app/docker-compose.test.yml up -d db Потом извне внутрь контейнера с базой закидываю дамп docker cp dump_for_test.sql app_db_1:/ И потом уже через docker-compose его выгружаю в бд TAG=test docker-compose -f ../app/docker-compose.test.yml exec -T db psql -d hrmdb -U user -f dump_for_test.sql При такой ситуации не совсем понимаю как мне хелсчек поможет Ну будет запускаться сервис с базой с хелзчеком, но мне как минимум дамп закинуть надо извне в контейнер и потом уже изнутри контейнера выгружать дамп в дб
Andrey
Так зачем отдельно? Описываете два сервиса в композ файле, и пускаете их docker-compose up -d db db-populate
Andrey
И он сам проверит и запустит
Ярослав
Хммм....... Интересно получается) Один контейнер с чистой psql базой, а второй контейнер с psql базой и дампом который подрубается к "чистому" сервису с бд и загружает туда дамп?
Andrey
Да, загружает дамп и умирает
Andrey
А база как работала так и работает
Alexey
у тебя постгрес то вообще стартанул?
Да, все контейнеры запущены, я же давал скрин с docker ps выше
Alexey
Всем привет. Объясните новичку один момент пожалуйста) Вот когда используется команда run, оболочка переходит в контекст контейнера. И после этого, если прервать выполнение команды, переданной после run, контейнер стопорится. Речь о MongoDB если что) Какой синтаксис команды run использовать, чтобы контейнер запустился и работал в фоне?
Andrey
run -d
Alexey
run -d
Оп. Спасибо большое))
Alexey
А как хранить состояние контейнера? Ну то есть, я передал все параметры в run, потом после restart контейнер запускается без них
George
Состояние контейнера записывается внутри в бд в докера. Проверь docker inspect до рестарта и после
Anonymous
docker-compose up -d —force-recreate ERROR: No such service: —force-recreate
Anonymous
docker-compose -f docker-compose.yml up -d --force-recreate ERROR: .FileNotFoundError: [Errno 2] No such file or directory: './docker-compose.yml'
Anonymous
что не так?
wasja
No such file or directory - у тебя файлик не видит, ты точно в той папке где файл находится запускаешь?
Anonymous
да. уу меня проблема со временем почему-тог. если я ставлю 19 декабря, то работает корректно
Anonymous
что-то сбилось со временем
Evgeniy
Сам же ответил на свой вопрос
Stanislav
всем привет, подскажите пожалуйста, в чем проблема может быть, не особо догоняю, уже долго достаточно сижу. образы nginx и bitnami/php-fpm:7.3
Stanislav
George
Ну, написано же - пермишн денайд
George
Юзеры разные наверняка в разных образах. Ты создаёшь файлы и какой-то из двух контейнеров не может их прочитать
Stanislav
Ну, написано же - пермишн денайд
в этом и проблема как пофиксить не понимаю. юзеры разные в разных образах (nginx и www-data)
George
в этом и проблема как пофиксить не понимаю. юзеры разные в разных образах (nginx и www-data)
Самое простое - никак не фиксить. В смысле запускаешь под рутом и не ломаешь мозг. Если ты похитрее, то пересобираешь оба образа. Так чтобы айди юзера был одинаковый
George
Третий вариант - ты тупо создаёшь файлы с маской 777