Skip to content

Cum să rulezi Flyway Teams în containere

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să rulezi Flyway Teams în containere. We cover key concepts, practical examples, and best practices.

Vei învăța cum să rulezi Flyway Teams în containere Docker, permițând migrări portabile și reproductibile în orice mediu, de la development la producție.

Problema

Instalarea manuală a Flyway pe fiecare mașină duce la diferențe de versiune și configurare între medii. Dockerizarea migrărilor asigură că același proces rulează identic pe fiecare mașină.

Modul Greșit

# Dockerfile — imagine minimă fără configurare
FROM flyway/flyway:latest
COPY migrations /flyway/sql
# Fără script de entrypoint, fără gestionare a erorilor
docker run my-flyway-image migrate
# Eroare: Nu se poate conecta la bază — variabile de mediu lipsă

Modul Corect

# Dockerfile
FROM flyway/flyway:10-alpine

COPY migrations /flyway/project/db/migration
COPY flyway.conf /flyway/conf/flyway.conf

ENTRYPOINT ["flyway"]
CMD ["migrate"]
# flyway.conf
flyway.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
flyway.user=${DB_USER}
flyway.password=${DB_PASSWORD}
flyway.locations=filesystem:/flyway/project/db/migration
flyway.baselineOnMigrate=true
# Construiește și rulează
docker build -t my-migrations .

docker run --rm \
  -e DB_HOST=postgres \
  -e DB_PORT=5432 \
  -e DB_NAME=mydb \
  -e DB_USER=admin \
  -e DB_PASSWORD=secret \
  --network my-network \
  my-migrations migrate

Output:

Flyway Teams 10.0.0
Successfully applied 2 migrations (execution time 00:00.234s)

Pas cu Pas

1. Creează Dockerfile-ul

FROM flyway/flyway:10-alpine
COPY migrations /flyway/project/db/migration
COPY flyway.conf /flyway/conf/flyway.conf

2. Configurează variabilele de mediu

flyway.url=jdbc:postgresql://${DB_HOST}:${DB_PORT}/${DB_NAME}
flyway.user=${DB_USER}
flyway.password=${DB_PASSWORD}

3. Rulează cu docker-compose

version: '3.8'
services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: mydb
      POSTGRES_PASSWORD: secret

  migrate:
    build: .
    depends_on:
      - db
    environment:
      DB_HOST: db
      DB_PORT: 5432
      DB_NAME: mydb
      DB_USER: postgres
      DB_PASSWORD: secret
    command: migrate
docker-compose up migrate

Sfaturi de Prevenție

  • Folosește tag-ul imaginii (flyway:10-alpine), nu latest
  • Montează scripturile de migrare ca volum pentru dezvoltare
  • Rulează containerul cu --rm pentru a elimina containerele temporare
  • Folosește depends_on cu condition: service_healthy

Greșeli Comune

  1. Imagine fără driver JDBC — imaginile oficiale includ driverele comune, dar pentru baze mai puțin cunoscute trebuie adăugat manual
  2. Rețea neconfigurată — containerul Flyway trebuie să fie în aceeași rețea cu baza de date
  3. Variabile de mediu lipsă — Flyway nu pornește fără flyway.url și credentiale
  4. Scripturi montate greșit — calea din container trebuie să corespundă cu flyway.locations

Întrebări Frecvente

### Cum actualizez versiunea Flyway în container?

Schimbă tag-ul imaginii în Dockerfile de la flyway:10-alpine la flyway:11-alpine și reconstruiește imaginea.

Pot rula comenzi multiple Flyway într-un singur container?

Da — suprascrie comanda: docker run ... my-image "validate" && docker run ... my-image "migrate" sau folosește un script de entrypoint.

Cum păstrez istoricul migrărilor între rulări?

Istoricul este stocat în tabela flyway_schema_history din baza de date, nu în container. Poți rula containerul de câte ori e nevoie.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Flyway în containere pentru migrări sigure și portabile.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro