我正在尝试运行以下命令:
npx sequelize-cli db:migrate
sequelize-cli
使用的./config/config.js
文件包含以下内容:
module.exports = {
username: process.env.PGUSER,
host: process.env.PGHOST,
database: process.env.PGDATABASE,
password: process.env.PGPASSWORD,
port: process.env.PGPORT,
};
如果您console.log()
全部process.env.<var>
,所有都回来了undefined
。
但是,如果进入Express应用程序所在的index.js
并且console.log
是同一事物,它将返回预期值。
在所有这些过程中,我让Kubernete与skaffold.yaml
和minikube
一起运行。
是否有一种无需创建.env
就可以运行这些命令的方式来使其正常工作的方法?
server-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: server-deployment
spec:
replicas: 3
selector:
matchLabels:
component: server
template:
metadata:
labels:
component: server
spec:
containers:
- name: server
image: sockpuppet/server
ports:
- containerPort: 5000
env:
- name: PGUSER
value: postgres
- name: PGHOST
value: postgres-cluster-ip-service
- name: PGPORT
value: '5432'
- name: PGDATABASE
value: postgres
- name: PGPASSWORD
value: ''
答案 0 :(得分:0)
好吧,这并不漂亮,但这是我能发现的最好的。希望有人有更好的答案...
由于这是一个deployment
,由三个副本组成,因此它会产生三个吊舱。必须先获取ID:
kubectl get pod
一旦我可以执行以下操作:
kubectl exec -it server-deployment-84cf685559-gwkvt -- npx sequelize-cli db:migrate
那行得通,但有点混乱。
通过this link来提高效率,尤其是仅制作alias
时:
kubectl exec -it $(kubectl get pods -o name | grep -m1 INSERT_DEPLOYMENT_NAME_HERE | cut -d'/' -f 2) INSERT_YOUR_COMMAND_HERE
kubectl exec -it $(kubectl get pods -o name | grep -m1 server-deployment | cut -d'/' -f 2) "npx sequelize-cli db:migrate"