170 похожих чатов

Добрый. Подскажите пожалуйста как накатить миграции для базы данных Postgresql

в контейнере Docker? Собрал в вижле свое ASP.Net приложение через файл docker-compose.
Кстати вот он:

version: '3.4'

services:
naladimbot:
image: ${DOCKER_REGISTRY-}naladimbot
build:
context: .
dockerfile: NaladimBot/Dockerfile
ports:
- "80:80"
depends_on:
- db
networks:
- mynetwork
db:
image: postgres:latest
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 23r2323ffsedsEGDS#%23EAF
POSTGRES_DB: NaladimBot.Database
volumes:
- db:/var/lib/postgresql/
networks:
- mynetwork

volumes:
db:

networks:
mynetwork:
driver: bridge

А вот строка подключения:


"ConnectionStrings": {
"DefaultConnection": "Server=db;Port=5432;Username=postgres;Password=23r2323ffsedsEGDS#%23EAF;Database=NaladimBot.Database;"
}


Все контейнеры появились в Docker Desktop. Но вот пытаюсь через Package Manager Console накатить миграции командой update-database, сталкиваюсь с ошибкой "Этот хост не найден".
В строке подключения пробывал менять server на Server=localhost, миграции наказываются успешно, но к базе данных не подключается в дальнейшем при работе приложения через докер. Что я делаю не так, где затык?

19 ответов

119 просмотров

так db это не uri и не имя хоста в целом

ALEX- Автор вопроса
Anton 『被遗忘的社会』
так db это не uri и не имя хоста в целом

Тогда получается затык в строке подключения?

Для такого миграции лучше делать в самом приложении, при старте... Чтобы при развертывании, оно все само накатывало. )

Дмитрий Алексеев
Для такого миграции лучше делать в самом приложени...

Вообще накатка миграций на старте не самая лучшая идея, хотя иногда так и делают

Дмитрий Алексеев
А обоснование будет?

Да, можно погуглить 12 factor app, если устроит. А если нет, то, например, если приложение на старте не сможет накатить миграции, то упадёт вместе с контейнером и даже логи нельзя будет посмотреть нормально без танцев. +замедляется старт приложения

Oleg Safonov
Да, можно погуглить 12 factor app, если устроит. А...

Ещё к причинам относят то, что может быть несколько инстансов таких сервисов, в которых происходят автомиграции и может случиться грязь) Но нам похер, мы накатываем)

Oleg Safonov
Да, можно погуглить 12 factor app, если устроит. А...

> 12 factor app Это вообще не про миграции. А если нет, то, например, если приложение на старте не сможет накатить миграции, то упадёт вместе с контейнером А кто его падать обязывает?

Rudakov V.
Ещё к причинам относят то, что может быть нескольк...

В мультиинстансах вообще нельзя миграции применять )

Дмитрий Алексеев
> 12 factor app Это вообще не про миграции. А ес...

Не вижу смысла спорить, если вы не понимаете о чём речь, честно.

Дмитрий Алексеев
В мультиинстансах вообще нельзя миграции применять...

Применяю и чувствую себя прекрасно 😁 прилепили ретрай на эту логику и ни разу проблем не возникло)

Rudakov V.
Применяю и чувствую себя прекрасно 😁 прилепили рет...

И как вам ретрай помогает, если провели миграцию, а половина инстансов со старой схемой?

Дмитрий Алексеев
И как вам ретрай помогает, если провели миграцию, ...

А, мультиинстансы БДшек?) Я то про сервисы говорю, БД одна) у нас не шибко высокая нагрузка :)

Rudakov V.
А, мультиинстансы БДшек?) Я то про сервисы говорю,...

Ну даже в этом случае сами инстансы отвалятся при обращении к одной БД, если схема не соответствует...

Дмитрий Алексеев
Ну даже в этом случае сами инстансы отвалятся при ...

Кто-то же из них накатит миграцию при старте Что тут отвалится?

Rudakov V.
Кто-то же из них накатит миграцию при старте Что ...

А кто будет гарантировать что они все одной версии? И как будет определяться кто из них будет накатывать... Как бы в паралель срать не начали... ну такое...

Дмитрий Алексеев
А кто будет гарантировать что они все одной версии...

Ни разу в параллель не ушли) может когда-то обосремся, но не сегодня) Если инстанс не смог накатить, потому что другой накатывает - уходит в ретрай, на следующей итерации он смотрит, а схема уже соответствует и ничего не накатывает) На нашем проекте вполне достаточно такой логики

Rudakov V.
Ни разу в параллель не ушли) может когда-то обосре...

Не суть, я так то про монолит говорил )) Микросервисы сами по себе другая тема.

package manager не работает с компоузом

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Oh sorry did you want it in Gunter's chains?
Martin Rys
15
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта