golang-migrate игнорирует файл миграции. Как исправить?
Во время миграций, golang-migrate должен создавать две таблицы, но по итогу создаётся только вторая, а первая игнорируется.
Вот структура файлов в директории /db/migrations:
000001_create_tasks_table.down.sql
000001_create_tasks_table.up.sql
000002_create_tokens_table.down.sql
000002_create_tokens_table.up.sql
Каждый из этих файлов я уже пытался выполнять у себя в локальной БД, и все они успешно выполнялись, а значит, скорее всего, ошибка не в SQL коде.
Makefile:
FROM golang:alpine as builder
#Update depences
RUN apk update && apk upgrade && apk add --no-cache git curl
#Create build directory
RUN mkdir /app/bin -p
#Download migrate app
RUN curl -L https://github.com/golang-migrate/migrate/releases/download/v4.15.1/migrate.linux-amd64.tar.gz |\
tar xvz migrate -C /app/bin
#Download health check utility
RUN GRPC_HEALTH_PROBE_VERSION=v0.4.6 && \
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
chmod +x /bin/grpc_health_probe
#Set home directory
WORKDIR /app
#Enable go option
ENV GO111MODULE=on
#Copy go.mod
ADD go.mod go.sum /app/
#Download go depences
RUN go mod download
#Copy all local files
ADD . /app
#Build app
RUN GOOS=linux go build -o bin ./...
#Run container
FROM alpine:latest
#Install packages
RUN apk --no-cache add ca-certificates tzdata
#Create home directory
WORKDIR /app
#Install migrate tool
COPY --from=builder /app/bin/migrate /usr/local/bin
#Copy build file
COPY --from=builder /app/bin/app ./app
#Copy migration dirx
COPY --from=builder /app/db/migrations ./migrations
#Copy migration dir
COPY --from=builder /bin/grpc_health_probe /bin/grpc_health_probe
#for solving time.LoadLocation errors in container, https://stackoverflow.com/questions/59094236/error-unknown-time-zone-america-los-angeles-in-time-loadlocation
#ADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /zoneinfo.zip
#ENV ZONEINFO /zoneinfo.zip
CMD ["./app"]
Далее уже сам pod в k8s вызывает golang-migrate командой:
command: [ 'sh', '-c', 'migrate -source file://migrations -database "$MIGRATE_URL" up' ]
По идее, должно создаваться две таблицы, но по итогу создаётся лишь одна.
Из-за чего golang-migrate может игнорировать файлы и не создавать таблицы? И как исправить данную проблему?
P.S. Если необходимо, я могу предоставить SQL команды миграций.