我是新来的码头工人。我仍然试图把我的头围绕着这一切。我该如何使用Postgresql docker镜像/容器?
我建立一个节点的应用程序(REST API),使用PostgreSQL来存储我的数据。
我花了几天的学习泊坞窗,但我不知道我是否做的事情,我应该的方式。
因此,这里是我的问题:
我使用的是正式的Postgres泊坞窗9.5图像为基础,以建立自己的(我Dockerfile只增加plpython在它的上面,并安装一个定制的Python模块用于plpython存储过程中)。我建立了我的容器作为suggedsted Postgres的图像文档:
搬运工运行--name一些-的Postgres -e POSTGRES_PASSWORD = mysecretpassword Postgres的-d
后,我停止容器再次使用上述命令我不能运行,因为容器已经存在。所以我使用docker start而不是docker run来启动它。这是做事情的正常方式吗?我通常会第一次使用码头运行并且码头每隔一段时间启动一次?
持久性:我创建了一个数据库,并填充它的运行容器上。我使用pgadmin3进行连接。我可以停止并启动容器,数据仍然存在,但我不确定这是为什么发生的。我可以在正式的Postgres图像将卷创建(VOLUME的/ var/lib中/ PostgreSQL的/数据)的Dockerfile看到的,但我不知道这是持久性工作的原因。你能否简单地解释一下(或者指出一个解释)这一切是如何运作的?
架构:从我读,似乎对于这种应用程序最合适的架构,可运行3个独立的容器中。一个用于数据库,一个用于保存数据库数据,另一个用于节点应用程序。这是做这件事的好方法吗?如何使用数据容器改善事情? AFAIK我目前的设置工作正常,没有一个。
还有什么我要atention什么?
感谢
编辑:增加了我的困惑,我只是跑一个新的容器从Debian官方照片(不Dockerfile,只是码头工人运行-i -t -d --name debtest的debian /箱/ bash)的。随着容器在后台运行,我使用docker attach debtest连接到它,然后进入apt-get安装postgresql。一旦安装,我运行(仍然在容器内)psql,并在默认的postgres数据库中创建一个表,并用1条记录填充它。然后我退出了外壳,并且由于外壳不再运行,容器自动停止。我使用docker start debtest启动了容器,然后连接到它并最终再次运行psql。自第一次运行以来,我发现一切都持续存在。 Postgresql被安装,我的表在那里,而且我的插入记录也在那里。我真的很困惑,为什么我需要一个VOLUME来保存数据,因为这个快速测试没有使用一个,所有的apears都能正常工作。我在这里错过了什么吗?
再次感谢
您认为持久性容器是个好主意! –
@RobertGrant取决于你的情况。在某些情况下,它可能已经足够好了,有时候您可能希望拥有主机卷。有些设置完全禁止卷。 –
这似乎是一个边缘情况下,而不是在答案中没有一个大的警告标志应该写的东西。 –