Flyway 作业未执行命令
Flyway job is not executing command
问题
我有一个 flyway 作业,打算在 postgres 数据库上执行迁移。
作业似乎不是 运行 作业日志的命令和检查仅输出 flyway 文档。
预期
我希望日志检查是发生的迁移的概要。
我还安装了 pgweb 以允许观察,并且在连接到我的 postgres pod 后,很明显根本没有创建任何表。
这是 kubectl logs flyway-pod 的预期输出照片
我得到什么
这是 kubectl logs flyway-pod 的输出
如您所见,它打印使用指南而不是迁移发生的标志。
我试过的-解释
到目前为止,我一直在移动连接命令。
我已经注释掉了我尝试放置命令的位置。
我已经在 3 个地方试过了。
- 在原始 Flyway Docker文件中,无处可寻。
- 在飞路服务附近的 docker compose 文件中,别处无处。
- 在 Kubernetes Flyway 工作中,别无他处。
代码
这是我的文件和设置。
Kubernetes 文件
以下是用于设置我的集群的相关 Kubernetes 文件。
飞路工作:
这是 Flyway 作业:
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
Postgres 部署和服务
Postgres 部署文件
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
Postgres 服务
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
Docker 个文件
由于我在本地构建图像并使用 kind 将它们拉入我的集群,因此我将附上相关的 Docker 文件。
飞行路线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"]
Flyway SQL 脚本
这个脚本存储在migrations/sql
里面
CREATE TABLE wallet.transaction_events (
transaction_version int,
transaction_type VARCHAR(200),
coins int,
transaction_id VARCHAR(500),
wallet_id VARCHAR(500)
)
Docker撰写
这是我在拉入 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
我想我已经涵盖了为我的问题提供上下文所需的所有内容,但如果需要任何说明,请随时询问。
我非常感谢任何帮助使这些迁移工作的帮助。
谢谢
你的命令是数组语法,这意味着每个参数必须是一个单独的元素。
你在最后一个元素中有两个参数,flyway 不理解。
修复:
"-connectRetries=60 migrate"]
改为
"-connectRetries=60", "migrate"]
问题
我有一个 flyway 作业,打算在 postgres 数据库上执行迁移。 作业似乎不是 运行 作业日志的命令和检查仅输出 flyway 文档。
预期
我希望日志检查是发生的迁移的概要。 我还安装了 pgweb 以允许观察,并且在连接到我的 postgres pod 后,很明显根本没有创建任何表。
这是 kubectl logs flyway-pod 的预期输出照片
我得到什么
这是 kubectl logs flyway-pod 的输出
我试过的-解释
到目前为止,我一直在移动连接命令。
我已经注释掉了我尝试放置命令的位置。 我已经在 3 个地方试过了。
- 在原始 Flyway Docker文件中,无处可寻。
- 在飞路服务附近的 docker compose 文件中,别处无处。
- 在 Kubernetes Flyway 工作中,别无他处。
代码
这是我的文件和设置。
Kubernetes 文件
以下是用于设置我的集群的相关 Kubernetes 文件。
飞路工作:
这是 Flyway 作业:
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
Postgres 部署和服务
Postgres 部署文件
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
Postgres 服务
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
Docker 个文件
由于我在本地构建图像并使用 kind 将它们拉入我的集群,因此我将附上相关的 Docker 文件。
飞行路线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"]
Flyway SQL 脚本
这个脚本存储在migrations/sql
里面CREATE TABLE wallet.transaction_events (
transaction_version int,
transaction_type VARCHAR(200),
coins int,
transaction_id VARCHAR(500),
wallet_id VARCHAR(500)
)
Docker撰写
这是我在拉入 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
我想我已经涵盖了为我的问题提供上下文所需的所有内容,但如果需要任何说明,请随时询问。
我非常感谢任何帮助使这些迁移工作的帮助。 谢谢
你的命令是数组语法,这意味着每个参数必须是一个单独的元素。 你在最后一个元素中有两个参数,flyway 不理解。
修复:
"-connectRetries=60 migrate"]
改为
"-connectRetries=60", "migrate"]