soc*_*pet 0 docker kubernetes skaffold
首先,我很确定我知道为什么这不起作用:我正在拉取 Dockerpostgres:11-alpine映像,对其进行修改,然后尝试更改自定义映像上的env:k8s 中的内容。deployment.yaml我认为这就是问题所在。
postgres 基本上,我正在尝试根据 Docker文档来完成此任务:
docker run --name some-postgres -e POSTGRES_PASSWORD='foo' POSTGRES_USER='bar'
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的:
Dockerfile.dev
FROM postgres:11-alpine
EXPOSE 5432
COPY ./db/*.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
postgres.yaml(在我完成此操作后,秘密将被移动)
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:
matchLabels:
component: postgres
template:
metadata:
labels:
component: postgres
spec:
containers:
- name: postgres
image: testproject/postgres
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: "test_dev"
- name: POSTGRES_USER
value: "bar"
- name: POSTGRES_PASSWORD
value: "foo"
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
subPath: postgres
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-storage
---
apiVersion: v1
kind: Service
metadata:
name: postgres-cluster-ip-service
spec:
type: ClusterIP
selector:
component: postgres
ports:
- port: 5432
targetPort: 5432
Run Code Online (Sandbox Code Playgroud)
然而,当我使用 Skaffold 在本地启动集群时,env:“不要”,因为我仍然可以使用默认值POSTGRES_USER=postgres和POSTGRES_PASSWORD=''.
我敢打赌,如果我image: postgres这样做了env:,那么就会起作用,但是我不确定如何执行 Dockerfile 中的等效操作:
COPY ./db/*.sql /docker-entrypoint-initdb.d/
Run Code Online (Sandbox Code Playgroud)
有什么建议么?
这是skaffold.yaml如果这也有帮助:
apiVersion: skaffold/v1beta15
kind: Config
build:
local:
push: false
artifacts:
- image: testproject/postgres
docker:
dockerfile: ./db/Dockerfile.dev
sync:
manual:
- src: "***/*.sql"
dest: .
- image: testproject/server
docker:
dockerfile: ./server/Dockerfile.dev
sync:
manual:
- src: "***/*.py"
dest: .
deploy:
kubectl:
manifests:
- k8s/ingress.yaml
- k8s/postgres.yaml
- k8s/server.yaml
Run Code Online (Sandbox Code Playgroud)
小智 5
Docker postgres文档提到了以下内容:
警告:只有当您使用空数据目录启动容器时,Docker 特定变量才会生效;容器启动时任何预先存在的数据库都将保持不变。
您确定要使用空数据目录开始部署吗?PostgreSQL 是否会启动并允许您使用首次使用该持久卷启动它时在环境变量中指定的凭据登录?
如果不是这样,请查看正在运行的 pod 的环境变量。kubectl describe POD应该告诉您哪些环境变量实际上传递到了 pod。也许您的 Skaffold 设置中的某些内容会覆盖环境变量?您可以通过在执行到 pod 时运行来查看 pod 中的情况env。另外不要忘记日志,PostgreSQL 容器应该记录它在启动期间创建的用户帐户。
| 归档时间: |
|
| 查看次数: |
808 次 |
| 最近记录: |