在 k8s/Skaffold 中为 Postgres 容器映射本地卷和端口绑定
Mapping local volume and port binding for Postgres container in k8s/Skaffold
我的印象是不能将以下命令的等效项放入 Dockerfile
或 Dockerfile.dev
:
docker run -p 5432:5432 -v /home/app/database/db-files:/var/lib/postgresql/data sockpuppet/database
我用来绑定到本地端口的 -p 5432:5432
这样我就可以使用 pgAdmin 连接到 Postgres。这不是绝对要求,但很高兴拥有。 也许有更好的方法?
-v /home/app/database/db-files:/var/lib/postgresql/data
这样我就可以在本地卷上保存数据。
问题是 EXPOSE
在 Dockerfile
中,据我所知,只是打开容器之间的端口。 Dockerfile
中 VOLUME
的问题在于它仅指图像的文件系统。
我很难理解的更大问题是 Skaffold skaffold.yaml
在 运行 连接容器时引用这些 Dockerfile
`Dockerfile.dev`:
apiVersion: skaffold/v1beta2
kind: Config
build:
local:
push: false
artifacts:
- image: sockpuppet/client
context: client
docker:
dockerfile: Dockerfile.dev
sync:
'**/*.js': .
'**/*.css': .
'**/*.html': .
- image: sockpuppet/server
context: server
docker:
dockerfile: Dockerfile.dev
sync:
'**/*.js': .
deploy:
kubectl:
manifests:
- k8s/client-deployment.yaml
- k8s/server-deployment.yaml
- k8s/server-cluster-ip-service.yaml
- k8s/client-cluster-ip-service.yaml
那么,如果无法在 Dockerfile
中指定,我应该如何绑定端口和映射卷?每次我想启动数据库时只需要手动 运行 docker run -p 5432:5432 -v /home/app/database/db-files:/var/lib/postgresql/data ishraqiyun77/database
吗?
如果有帮助,我正在使用 Repo 作为参考:https://github.com/StephenGrider/DockerCasts/tree/master/complex
skaffold.yaml
可以帮助构建和部署 k8s
。如果您想进行端口公开和卷映射,您应该在 manifests
部分的各种 .yaml
文件中进行。 Dockerfile
中的 EXPOSE
关键字只是告诉新创建的图像允许公开和转发哪些端口;只有在您的 k8s
容器中,您才真正将端口和卷映射到主机。
披露:我是一名 EnterpriseDB (EDB) 员工
我的印象是不能将以下命令的等效项放入 Dockerfile
或 Dockerfile.dev
:
docker run -p 5432:5432 -v /home/app/database/db-files:/var/lib/postgresql/data sockpuppet/database
我用来绑定到本地端口的 -p 5432:5432
这样我就可以使用 pgAdmin 连接到 Postgres。这不是绝对要求,但很高兴拥有。 也许有更好的方法?
-v /home/app/database/db-files:/var/lib/postgresql/data
这样我就可以在本地卷上保存数据。
问题是 EXPOSE
在 Dockerfile
中,据我所知,只是打开容器之间的端口。 Dockerfile
中 VOLUME
的问题在于它仅指图像的文件系统。
我很难理解的更大问题是 Skaffold skaffold.yaml
在 运行 连接容器时引用这些 Dockerfile
`Dockerfile.dev`:
apiVersion: skaffold/v1beta2
kind: Config
build:
local:
push: false
artifacts:
- image: sockpuppet/client
context: client
docker:
dockerfile: Dockerfile.dev
sync:
'**/*.js': .
'**/*.css': .
'**/*.html': .
- image: sockpuppet/server
context: server
docker:
dockerfile: Dockerfile.dev
sync:
'**/*.js': .
deploy:
kubectl:
manifests:
- k8s/client-deployment.yaml
- k8s/server-deployment.yaml
- k8s/server-cluster-ip-service.yaml
- k8s/client-cluster-ip-service.yaml
那么,如果无法在 Dockerfile
中指定,我应该如何绑定端口和映射卷?每次我想启动数据库时只需要手动 运行 docker run -p 5432:5432 -v /home/app/database/db-files:/var/lib/postgresql/data ishraqiyun77/database
吗?
如果有帮助,我正在使用 Repo 作为参考:https://github.com/StephenGrider/DockerCasts/tree/master/complex
skaffold.yaml
可以帮助构建和部署 k8s
。如果您想进行端口公开和卷映射,您应该在 manifests
部分的各种 .yaml
文件中进行。 Dockerfile
中的 EXPOSE
关键字只是告诉新创建的图像允许公开和转发哪些端口;只有在您的 k8s
容器中,您才真正将端口和卷映射到主机。
披露:我是一名 EnterpriseDB (EDB) 员工