Задать вопрос
Nimex
@Nimex
Junior Frontend

Как выполнить миграции в Docker?

Не получается запустить миграции, на месте RUN ./migrator выходит следующая ошибка:
panic: failed to connect to `host=db user=postgres database=iod`: hostname resolving error (lookup db on 192.168.65.7:53: no such host)


Проблема в том что миграция запускается во время билда, но база данных еще не работает, поэтому и ошибка такая, но вопрос в том как решить эту проблему.
Пробовал CMD migrator - вообще ноль реакции
Пробовал отдельно в docker-compose сделать сервис migrator, который запускается после db - точно та же ошибка что и выше.

FROM golang:alpine

RUN apk update && apk add --no-cache git && apk add --no-cache bash

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .
COPY .env .

RUN go build -o migrator ./cmd/migrator/main.go
RUN ./migrator

RUN go build -o bin/app cmd/app/main.go

ENTRYPOINT ["/app/bin/app"]

EXPOSE 8080


Код docker-compose:
networks:
  proxynet:
    driver: bridge

volumes:
  local_postgres_data:

services:
  db:
    container_name: db
    restart: always
    image: postgres:latest
    env_file: ./.env
    networks:
      - proxynet
    expose:
      - "5432"
    volumes:
      - local_postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}" ]
      interval: 10s
      retries: 5
      start_period: 30s
      timeout: 10s
  server:
    container_name: server
    restart: always
    build:
      context: .
      dockerfile: Dockerfile
    env_file: ./.env
    ports:
      - "8080:8080"
    networks:
      - proxynet
    depends_on:
      db:
        condition: service_healthy
  • Вопрос задан
  • 165 просмотров
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 1
fzfx
@fzfx
18,5 дм
в healthcheck в команду нужно добавить параметр -h 127.0.0.1, только в этом случае healthcheck будет отрабатывать правильно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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