提问者:小点点

飞行路线作业未执行命令


我有一个flyway作业,旨在对postgres数据库执行迁移。该作业似乎没有运行命令并检查作业日志,仅输出flyway留档。

我希望日志检查是所发生迁移的概要。我还安装了pgweb以实现可观察性,在连接到我的postgres pod后,很明显根本没有创建任何表。

到目前为止,我一直在移动连接命令。

我已经注释掉了我尝试放置命令的位置。我已经在3个位置尝试过了。

  1. 在原始Flyway Dockerfile中,而不是其他地方。
  2. 在docker中,在flyway服务附近和其他地方附近编写文件。
  3. 在库伯内特斯飞道的工作中,而不是在其他地方。

这是我的文件和设置。

以下是用于设置我的集群的相关库伯内特斯文件。

这是飞行路线的工作:

kind: Job
metadata:
  name: flyway-migration-job
spec:
  template:
    spec:
      containers:
      - name: flyway
        image: flyway/flyway:6.3.1
        command: ["flyway", "-url=jdbc:postgresql://postgres-master:5432/wallet", "-user=test_user", "-password=testuser1234", "-schemas=wallet", "-connectRetries=60 migrate"]
      restartPolicy: OnFailure
kind: Deployment
metadata:
  name: postgres-master
  labels:
    app: postgres-master
spec:
  replicas: 1
  selector:
    matchLabels:
      app: postgres-master
  template:
    metadata:
      labels:
        app: postgres-master
    spec:
      containers:
        - name: postgres-master
          image: postgres:13
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5432
          env:
            - name: POSTGRES_DB
              value: wallet
            - name: POSTGRES_USER
              value: test_user
            - name: POSTGRES_PASSWORD
              value: testuser1234
      
apiVersion: v1
kind: Service
metadata:
  name: postgres-master
  labels: 
    app: postgres-master
spec: 
  type: NodePort
  ports:
    - protocol: TCP
      port: 5432
      targetPort: 5432
  selector: 
    app: postgres-master

当我在本地构建我的图像并使用kind将它们放入我的集群时,我将附上我的相关docker文件。

FROM flyway/flyway:7.7.3-alpine

COPY ./migrations/sql /flyway/sql/

#CMD ["flyway -url=jdbc:postgresql://postgres-master:5432/wallet -user=test_user -password=testuser1234  -connectRetries=60 -schemas=wallet migrate"]

此脚本存储在migrations/sql中

CREATE TABLE wallet.transaction_events (
    transaction_version int,
    transaction_type VARCHAR(200),
    coins int,
    transaction_id VARCHAR(500),
    wallet_id VARCHAR(500)
)

这是我用来在拉入 kind/my 集群之前构建映像的 docker 撰写文件。

version: '3.5'
services:
  web:
    build:
      dockerfile: ./Dockerfile
    container_name: wallet-api-web
    depends_on: 
      - flyway
    ports: 
      - "8080:8080"
  postgres-db:
    build:
      dockerfile: ./utils/db.Dockerfile
    container_name: postgres-db
    environment:
      POSTGRES_PASSWORD: testuser1234
      POSTGRES_USER: test_user
      POSTGRES_DB: wallet
    image: postgres:13
    ports:
      - "5432:5432"
    restart: always

  flyway:
    build:
      dockerfile: ./migrations/Dockerfile
    #command: -url=jdbc:postgresql://postgres-master:5432/wallet -user=test_user -password=testuser1234 -schemas=wallet -connectRetries=60 migrate 
    container_name: flyway-migrations
    depends_on:
      - db
    image: flyway/flyway:6.3.1
    volumes:
      - ${PWD}/migrations/sql:/flyway/sql

我想我已经涵盖了提供问题背景所需的一切,但如果需要任何澄清,请随时询问。

我真的很感激为这些迁移工作提供的任何帮助。非常感谢。


共1个答案

匿名用户

命令采用数组语法,这意味着每个参数都必须是一个单独的元素。最后一个元素中有两个参数,flyway无法理解。

要修复:

"-connectRetries=60 migrate"]

更改为

"-connectRetries=60", "migrate"]