Tag: postgresql

Docker中的Postgres; 两个实例冲突的端口

我创build了一个托pipepostgres服务器的docker容器。 我试图得到这个运行两个实例索引两个完全不同的数据库,从而依赖于一组不同的卷。 我一个接着一个地运行以下两个命令: docker run -v … -p 5432:9001 -P –name psql-data postgres-docker docker run -v … -p 5432:9002 -P –name psql-transactions postgres-docker 第一个容器创build并运行,但第二个调用会引发以下错误: Error response from daemon: failed to create endpoint psql-transactions on network bridge: Bind for 0.0.0.0:5432 failed. Port already in use. 我发现这有点令人困惑,因为我认为容器的目的是隔离端口绑定。 我可以理解,如果我有两个容器映射5432到主机上的同一端口,但我试图将它们分别挂载到9001和9002。 我如何防止这个问题?

如何在容器内创buildpostgres扩展?

我必须安装hstore到我的hstore postgres 这是我在shell中的普通命令来执行我的需要 psql -d template1 -c 'create extension hstore'; 如果我删除了这个行,我的容器,它的工作原理,但我自己执行hstore安装,我必须告诉我的项目中的每个人这样做,这不是一个好的做法 这是我的yml file postgres: build: context: . dockerfile: dockerfiles/devdb.dockerfile environment: POSTGRES_USER: uih POSTGRES_PASSWORD: uIhbod! POSTGRES_DB: uih_portal ports: – "5433:5432" 这是我的docker文件devdb.dockerfile FROM postgres:9.5 RUN mkdir -p /var/lib/postgresql-static/data ENV PGDATA /var/lib/postgresql-static/data # psql -d template1 -c 'create extension hstore;' CMD ["psql", "-d", "template1", "-c", "'create extension hstore;'"] […]

如何在Docker上注册Postgres容器主机 – 组成?

我有一个应用程序(Flask / Pony ORM)容器,必须在启动时注册一个postgres db容器的主机。 我怎样才能得到主机(postgres容器)的位置? 在我本地设置我有“localhost”,但这不适用于应用程序容器。 我尝试了“172.17.0.2”,这是当我不使用docker-compose时pg容器的IP。 但是这两个都会返回一个错误。 有没有一种方法来指定docker-compose文件中的特定容器的主机位置?

在docker-compose中运行Django应用程序:连接到postgres数据库拒绝了第一次,但后来工作

我有这个奇怪的问题,可以从Docker的简单教程中复制。 如果我完全按照教程,一切都会正常工作,即在docker-compose up命令后,Web容器将运行并很好地连接到数据库容器。 但是,如果我select在主机上创build相同的Django项目,请更改postgres数据库的设置,并将其复制到Dockerfile中的Web图像中,而不是将主机目录挂载到容器,然后在那里执行这些操作(使用命令docker-compose run web django-admin.py startproject composeexample . ,然后更改生成的设置文件并位于主机上挂载的目录中),第一次运行docker-compose up , Web容器将有问题连接到数据库,错误如下 web_1 | psycopg2.OperationalError:无法连接到服务器:连接拒绝web_1 | 服务器是否在主机“db”(172.18.0.2)上运行并接受web_1 | 端口5432上的TCP / IP连接? 但是,如果我停止与docker-compose合成,然后再用docker-compose再次运行,Web容器将成功连接到db而不会出现问题。 '拒绝连接'似乎不是一个不常见的问题,但我已经检查和validation了所有的设置是正确的,像通常的原因,例如错误的端口号,端口没有暴露或设置主机为'本地'而不是'数据库'等在这种情况下不是问题。 注意:FWIW,我使用CNTLM作为主机的系统代理,必须设置网页图片的环境variables,并且对于其他场景也能正常工作。 编辑:请find更多的信息如下。 在主机目录中,我有以下文件和目录 composeexample(由另一个容器按照相同的教程生成并复制到这里) manage.py(由另一个容器生成并复制到这里) requirements.txt(与教程中的一样) Dockerfile(稍微修改了教程中的) docker-compose.yml(稍微修改一下教程) composeexample / settings.py: ……… DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'postgres', 'USER': 'postgres', 'HOST': 'db', 'PORT': 5432, } } ……… […]

Postgres – 在bash中testing数据库连接

我想知道是否有一个替代psql命令来testing使用bash连接到postgresql数据库。 我正在设置一个核心操作系统群集,并有一个服务,它应该每分钟执行相当于psql 'host=xxx port=xxx dbname=xxx user=xxx'的服务,以确定服务是否正在运行,更重要的是,如果可以使用给定的参数连接到它)。 我无法直接在Core OS上安装postgres。 Core OS中通常使用的命令类似curl -f ${COREOS_PUBLIC_IPV4}:%i; 。 但它只会告诉服务本身是否在给定的端口上运行,没有任何访问检查。 先谢谢你!

Postgres与Kubernetes和persistentDisk

我正在开始使用Kubernates,并且在使用Kubernetes和GCE持久性磁盘的情况下安装Postgres时遇到问题。 我可以使用Kubernates演练和以下指南成功安装Mysql: http ://amygdala.github.io/kubernetes/2015/01/13/k8s1.html 然而,当我试图用postgres实现类似的事情时,它似乎失败时,附加到磁盘或使用磁盘。 我创build了一个基于上面的post中的mysql的pod yaml,但是用postgres docker image代替了: apiVersion: v1beta1 id: postgres desiredState: manifest: version: v1beta1 id: postgres containers: – name: postgres image: postgres env: – name: DB_PASS value: password cpu: 100 ports: – containerPort: 5432 volumeMounts: # name must match the volume name below – name: persistent-storage # mount path within the container […]

备份运行postgres docker容器

我试图备份一个正在运行的postgres容器,没有运气。 我到目前为止是一个只有数据的容器,带有 – / var / lib / postgresql / data volume,以及一个运行官方postgres镜像的主数据库容器,以及来自数据容器的–volumes。 我尝试备份正在运行的postgres容器的/ data目录,然后恢复它,然后postgres运行到WAL不匹配问题(这也不会工作,无论根据postgres文档)。 那么,任何我可以备份数据库,然后恢复它,而主数据库容器正在运行?

无法连接pgbouncer和运行docker的postgres

所以这里是启动数据库的命令 sudo docker run –name mydb -e "POSTGRES_USER=user" -e "POSTGRES_PASSWORD=password" -t -d postgres 这是pgbouncer的dockerfile from ubuntu RUN apt-get update && apt-get -y install pgbouncer COPY /pgbouncer.ini /etc/pgbouncer/ COPY /userlist.txt /etc/pgbouncer/ EXPOSE 6543 这里是pgbouncer的设置 [databases] host = mydb [pgbouncer] pool_mode = session listen_addr = localhost listen_port = 6543 auth_type = plain auth_file = userlist.txt user = […]

Docker无法使用postgresql安装rails

我是docker工人。 我尝试用docker安装我的rails应用程序。 我使用postgresql的数据库。 我用这个无花果。 当我跑步 fig run web rake db:create 我得到错误"could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432?"." 任何帮助将不胜感激。 提前致谢

Docker容器的可靠性

我的问题旨在validation并纠正我对Docker容器可靠性的想法。 我在Docker文件中读取了Docker文档和一些关于VOLUME文章,而在运行容器时将-v作为参数读取,以便将数据保存在Docker容器之外。 放在数据容器或主机系统上。 为了保持设置的复杂性,我不希望复制/保存/存储数据,而是将其保存在Docker容器中。 有几种情况我通过它发现了Docker容器的行为。 我想知道如果我错过了一个容器可以100%丢失的场景,即不做$ docker rm -f mycontainer docker命令暂停,停止和杀死一个容器 – >可重新启动$ docker restart mycontainer或者$ docker run mycontainer 主机系统重启 – > docker容器退出0或255 主机系统意外断电 – >会发生什么情况? 应用程序exception – > docker容器以-1退出 更新或重新启动docker(正如Greg指出的那样) – >期望的行为:就像在系统重启(?) 在所有这些情况下,docker集装箱依然存在。 那么是否还有其他一些可能导致$ docker rm -f mycontainer容器丢失的情况,如$ docker rm -f mycontainer ? 背景是,我读了很多关于在Postgres的主机系统上安装的卷和外部数据存储,但我想避免在我的容器之外的数据存储在主机系统上,如果可能的话。 另一方面,我不想醒来,所有的数据都丢失了。 (我确实执行了常规的SQL转储,但是我不想每5分钟做一次)。 如果Docker容器本身对于持久性数据不可靠,我不明白为什么要创build第二个容器来保存第一个容器的数据,并通过添加一个新的容器来增加系统的复杂性,但却无法获得任何的可靠性。 编辑: 在Volumes上的Docker用户指南中有两点没有明确地解释期望的行为,因此让我质疑这些概念是否提供了额外的可靠性: 更新图像时不会包含对数据量的更改 – >这是否意味着它们会丢失或者卷的内容不会被更改? 卷持续存在,直到没有容器使用它们 – […]