Size: a a a

Docker — русскоговорящее сообщество

2019 December 13

LM

Lucifer Moriarty in Docker — русскоговорящее сообщество
на nginx нужен доступ к папке myproj/public для статичных файлов
источник

ВП

Влад Полтораков in Docker — русскоговорящее сообщество
Lucifer Moriarty
на nginx нужен доступ к папке myproj/public для статичных файлов
выстави их в Dockerfile через chmod и внутри образа будут права на папку
источник

LM

Lucifer Moriarty in Docker — русскоговорящее сообщество
Влад Полтораков
выстави их в Dockerfile через chmod и внутри образа будут права на папку
я тут немножно оказывается не понимаю как связаны внутриконтейнерные пользователи с системными пользователями
источник

LM

Lucifer Moriarty in Docker — русскоговорящее сообщество
даю права внутри контейнера php-fpm
запускаю баш внутр контейнера
chown -R www-data:www-data .

и выхожу из контейнера и вижу что права на папку действительно поменялись на www-data
в системе вроде есть пользователь www-data ну и ладно
теперь у пхп нет проблем запускается
а вот NGINX нет доступа с папке public т.к. он теперь www-data
источник

LM

Lucifer Moriarty in Docker — русскоговорящее сообщество
папка то общая на самом деле, примонтированы
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
Можете пожалуйста подсказать. Ситуация такая, 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
какая-то нестабильная
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
Я поставил 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
источник

ВП

Влад Полтораков in Docker — русскоговорящее сообщество
Ярослав Коробейников
Я поставил 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
простите, что оффтоп
но прочитав первую строчку подумал, что дальше будет стих :D
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
xD
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
6 билдов успешны из 14, и затык происходит на стадии  работы с сервисом db Очень странно для меня, то базы в контейнере не существует, то какие-то проблемы с сокетом, Но при этом бывает и всё хорошо, за один период времени. Кто-нибудь подскажет как можно избежать этой нестабильности? перед заливанием дампа в базу sleep на подольше поставить? 10 секунд это мало?))))
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
Ярослав Коробейников
Я поставил 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
67 билд кстати тоже сейчас пройдёт 😆Дамп нормально загрузился и он на стадии прогона тестов, так что в этот раз база сработала
источник

AZ

Andrey Zubkov in Docker — русскоговорящее сообщество
за 10 секунд возможно база и не стартанула. Используй в docker-compose healthcheck для проверки работоспособности базы, и после этого вливай дамп. Загрузку дампа так же сделай в самом композе файле
источник

VA

Viktor Afonin in Docker — русскоговорящее сообщество
Влад Полтораков
простите, что оффтоп
но прочитав первую строчку подумал, что дальше будет стих :D
В результате дженкинс умер.
Вот ошибка, подскажи.
источник

AZ

Andrey Zubkov in Docker — русскоговорящее сообщество
  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


Ну вот как то так у меня реализовано но с монгой, делай аналогично с постгресом
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
Andrey Zubkov
  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


Ну вот как то так у меня реализовано но с монгой, делай аналогично с постгресом
Спасибо 👍. Попробую
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
Andrey Zubkov
  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 работает как тригер для другого сервиса что можно бы уже и запускаться
Но у меня наверное немного другая ситуация, тесты запускаются "вне" контейнеров, контейнеры просто поднимают приложение, но базу мне нужно загрузить первой иначе к ней начнут подключаться другие сервисы и уже выгрзить в неё будет проблематично, начнёт зависать просто.
источник

ЯК

Ярослав Коробейников in Docker — русскоговорящее сообщество
Я вот такую чекалку нашёл, как считаете, сойдёт?)
источник

AZ

Andrey Zubkov in Docker — русскоговорящее сообщество
ну Вам же импорт в базу надо сделать после того как база запустится. Так что как раз это Ваш вариант
источник

AZ

Andrey Zubkov in Docker — русскоговорящее сообщество
Должна сойти, но выглядит как то костыльно больно
источник

AZ

Andrey Zubkov in Docker — русскоговорящее сообщество
источник