飞行路线作业错误
我目前正在尝试使用flyway在postgres中执行迁移。我觉得基于此错误消息找不到init脚本。不太确定我缺少什么,因为init脚本在使用docker容器时是有效的。
如果能为解决这个问题提供任何帮助,我们将不胜感激。
我发现了一些更多的研究链接,但它们不太适合或与我的问题一起工作,并且不那么值得注意或过时。
以下是我当前的设置:
旁注:我使用kind在本地提取我的docker图像并创建我的集群,我将在最后附上我的docker合成和docker文件。
我在库伯内特斯有一份工作,结构如下:
apiVersion: batch/v1
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 -connectRetries=60 migrate"]
restartPolicy: Never
backoffLimit: 1
此作业使用postgres,我创建了一个部署以使用:
apiVersion: apps/v1
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:12
imagePullPolicy: IfNotPresent
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: wallet
- name: POSTGRES_USER
value: test_user
- name: POSTGRES_PASSWORD
value: testuser1234
然后,我使用这个Postgres服务公开了Postgres pod:
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
我还有一个连接到数据库pod的节点部署,我已经确认我能够使用主机名postgres-master(pod名称)、上述登录详细信息和端口5432连接到数据库。
为了完整起见,我附上了节点部署文件,但它可以工作。
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-deployment
labels:
app: node-deployment
spec:
replicas: 3
selector:
matchLabels:
app: node-deployment
template:
metadata:
labels:
app: node-deployment
spec:
containers:
- name: node
image: wallet-api-20_web:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
env:
- name: PG_HOST
value: "postgres-master.default"
然后我有我的docker compose文件,我用它来构建我的映像:Side not——在我开始添加Kubernetes之前,所有的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:12
ports:
- "5432:5432"
restart: always
flyway:
command: -url=jdbc:postgresql://db:5432/wallet -user=test_user -password=testuser1234 -connectRetries=60 migrate
container_name: flyway-migrations
depends_on:
- db
image: flyway/flyway:6.3.1
volumes:
- ${PWD}/migrations/sql:/flyway/sql
这是我的postgres dockerfile:
FROM postgres:13
ENV POSTGRES_DB wallet
FROM node:15
ENV NODE_ENV=production
WORKDIR /app
# Copying the package json first enables caching.
COPY ["package.json", "package-lock.json*", "./"]
RUN npm install --production
COPY . .
RUN npm run build
ENTRYPOINT npm run start
这是我唯一的迁移脚本,它在移动到库伯内特斯之前就已经工作了。
CREATE TABLE transaction_events (
transaction_version int,
transaction_type VARCHAR(200),
coins int,
transaction_id VARCHAR(500),
wallet_id VARCHAR(500)
)
任何帮助将不胜感激,我有一种感觉,这可能是我错过的小东西。
如果还需要其他信息,请告诉我。
随时添加任何问题,我会尽我所能提供进一步的背景。
谢谢。
我怀疑你调用命令
的方式是问题所在。它需要命令:["flyway","-url=jdbc: postgresql://postgres-master: 5432/钱包","-user=test_user","-密码=testuser1234","-ConnectRetries=60迁移"]
另外,我认为您不需要使用命令
。您可以使用args
代替,因为您也使用图像入口点中指定的命令。args:["-url=jdbc: postgresql://postgres-master: 5432/钱包","-user=test_user","-密码=testuser1234","-ConnectRetries=60迁移"]
无论如何,两者都应该有效
flyway可以在迁移之前对数据库进行验证检查吗? 场景1 例如:我试图在现有的数据库上执行flyway。我已经在db_users表中插入了一些用户。 但是我的sql脚本有db_users表的create语句和所有用户的插入语句,包括那些已经插入的用户。 我可以在创建表之前做IFNOT_EXISTS检查,但很难在每次插入之前做检查。 情景2 我已经在数据库中迁移了脚本V1、V2和V3。我修改了脚本
我试图设置一个带有前端pod(cup fe)和后端pod的GKE环境,用于在登录时对用户进行身份验证(cup auth),但我无法让我的入口正常工作。 以下是运行nginx的前端吊舱(cup fe),带有角度应用程序。我还创建了一个静态IP地址,由“cup.xxx.it”和“cup-auth.xxx.it”dns解析: 然后是认证盒(cup auth): 然后,我创建了两个节点报告来公开上述POD
据我所知,作业对象应该在一定时间后收获豆荚。但是在我的GKE集群(库伯内特斯1.1.8)上,“kubectl get pods-a”似乎可以列出几天前的豆荚。 所有这些都是使用乔布斯API创建的。 我确实注意到在使用 kubectl 删除作业后,pod 也被删除了。 我在这里主要担心的是,我将在批量作业中在集群上运行成千上万个pod,并且不想让内部待办系统过载。
我想使用CronJob在Kubernetes内部运行一个shell脚本,下面是我的CronJon.yaml文件: CronJob已被创建(kubectl apply -f CronJob.yaml)当我获得CronJob的列表时,我可以看到cron job ( kubectl get cj ),当我运行“kubectl get pods”时,我可以看到pod正在被创建,但是pod崩溃了。谁能帮我学
欢迎任何输入或反馈。
我有一个部署在远程Kubernetes集群上的Flink SessionCluster(根据文档),可在