我正在研究如何使用docker运行openproject。我正在完成openproject/docker。
我已经使用外部postgres目录运行了docker镜像。
我现在正在研究如何连接到现有的postgresql运行实例。
根据官方文档,我使用的命令行看起来没问题。
修改即可。在缺少的-p。
中添加@IBAction func signup(_ sender: UIButton) { self.dismiss(animated: true, completion: nil) }
我已经省略了-d [deamon]标志,所以我可以看到任何错误。
当创建docker容器时,我得到了
docker run -p 8082:80 -p 5432:5432 --name openproject_dev -e SECRET_KEY_BASE=secret -e DATABASE_URL=postgresql://openproject:openproject-dev-
password@localhost:5432/openproject_dev \
-v /Users/admin/var/lib/openproject/logs:/var/log/supervisor \
-v /Users/admin/var/lib/openproject/static:/var/db/openproject openproject/community:5.0
我期待的。 然后我收到关于连接到postgresql服务器的错误,我不希望这样做。
-----> You're using an external database. Not initializing a local database cluster.
/usr/src/app /usr/src/app
Starting memcached: memcached.
我猜测初始化容器的脚本是期待postgres正在运行而事实并非如此。您如何使docker容器端口在命令行上将请求转发5432到主机? ...与docker相反运行-p 5432:5432 ...它将5432从docker容器暴露给主机。
答案 0 :(得分:2)
-e DATABASE_URL=postgresql://openproject:openproject-dev-
password@localhost:5432/openproject_dev
当你添加这个url时,容器希望postgres在localhost上运行,即本身。
如果您在主机上运行postgres,则可以通过在运行命令中传递--network host
让容器与主机共享网络堆栈。在这种情况下,localhost将引用运行postgres的主机。
答案 1 :(得分:1)
您的方法目前是错误的
docker run -p 8082:80 -p 5432:5432 --name openproject_dev -e SECRET_KEY_BASE = secret -e DATABASE_URL = postgresql:// openproject:openproject-dev-password @ localhost:5432 / openproject_dev \ -v / Users / admin / var / lib / openproject / logs:/ var / log / supervisor \ -v / Users / admin / var / lib / openproject / static:/ var / db / openproject openproject / community:5.0
当您使用-p 5432:5432
时,这意味着您希望在该端口上的docker中运行某些内容,并且您希望主机5432
端口映射到docker内的5432
。
接下来,如果您能够运行该命令,即使没有任何内容正在侦听容器内,那么这意味着主机上的端口可用。这意味着postgress也没有在主持人的5432
上收听。它可能正在侦听套接字。您应该尝试在主机上执行以下命令
psql -h 127.0.0.1
如果您无法使用此连接在主机上,则意味着postgres数据库绑定到套接字文件而不是IP。现在你可以选择几个选项
安装套接字
docker run -p 8082:80 -p 5432:5432 --name openproject_dev -e SECRET_KEY_BASE = secret -e DATABASE_URL = postgresql:// openproject:openproject-dev-password @ localhost:5432 / openproject_dev \ -v / Users / admin / var / lib / openproject / logs:/ var / log / supervisor \ -v:\ -v / Users / admin / var / lib / openproject / static:/ var / db / openproject openproject / community:5.0
绑定主机上的0.0.0.0
如果您不想安装卷,则应将psql的绑定地址更改为0.0.0.0
,然后将数据库URL更改为-e DATABASE_URL=postgresql://openproject:openproject-dev-password@<YOURMACHINEIP>:5432/openproject_dev
在主机网络上运行
docker run --net host --name openproject_dev -e SECRET_KEY_BASE = secret -e DATABASE_URL = postgresql:// openproject:openproject-dev-password @ localhost:5432 / openproject_dev \ -v / Users / admin / var / lib / openproject / logs:/ var / log / supervisor \ -v:\ -v / Users / admin / var / lib / openproject / static:/ var / db / openproject openproject / community:5.0