Vin*_* V. 16 postgresql ruby-on-rails docker
我在docker环境中创建了一个rails应用程序,它链接到postgres实例.我编辑了postgres容器以添加初始数据(通过从rails应用程序运行rake db:setup).现在我提交了postgres数据库,但是当我创建一个新的容器(提交的postgres图像)时,它似乎不记得我的数据.
是不是可以在提交中保存数据然后再重复使用它?
我使用了postgres图像:https://registry.hub.docker.com/_/postgres/
Adr*_*uat 19
问题是postgres Dockerfile将"/ var/lib/postgresql/data"声明为卷.这只是一个普通的目录,它位于图像使用的Union File System之外.卷直到没有容器链接到它们并且它们被明确删除.
你有几个选择:
--volumes-from
命令与新容器共享数据.这只有在一次只有一个正在运行的postgres图像时才有效,但这是最好的解决方案.所有这些建议都要求您在容器运行后使用Volumes来管理数据.或者,您可以编写自己的Dockerfile,而不是声明卷.然后,您可以docker commit
在添加数据后用于创建新图像.这可能会在短期内起作用,但绝对不是你应该如何使用容器 - 它不可重复,你最终会在联盟文件系统中用完图层.
查看有关管理容器中数据的官方Docker文档以获取更多信息.
创建一个新的Dockerfile并更改PGDATA
:
FROM postgres:9.2.10
RUN mkdir -p /var/lib/postgresql-static/data
ENV PGDATA /var/lib/postgresql-static/data
Run Code Online (Sandbox Code Playgroud)
您应该已使用以下命令完成设置。最重要的部分是 PGDATA 位置,它不应该是默认位置。
docker run -e PGDATA=/var/lib/postgresql/pgdata -e POSTGRES_PASSWORD=YourPa$$W0rd -d postgres
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3954 次 |
最近记录: |