我对 Docker 非常陌生,并用它进入了我的第一个真正的项目。我们有一个使用 Codeigniter 和 PostgreSQL 的 php 应用程序,它运行良好。现在我正在尝试对它进行 dockerize,但在使用 pdo_pgsql 驱动程序时遇到了一些麻烦。
我在网上找到了一些帮助来安装 pdo_pgsql 驱动程序,但是对于 php-5x 来说,这都是过时的解决方案。我似乎工作,因为我检查了 phpinfo 页面并且我的 php.ini 已正确加载并说 pdo_pgsql 和 pgsql 驱动程序都已安装并处于活动状态???
这是错误:
奇怪的是,当我第一次点击页面时,我只收到第一个错误。然后,如果我刷新页面,则会出现第二个错误。
当我登录到容器中,并cd以它说文件不存在的目录,我可以清楚地看到pdo.so,pdo_pgsql.so和pgsql.so。
遇到错误
您在 config/database.php 文件中指定了无效的数据库连接组 (dockerize)。
遇到 PHP 错误
严重性:核心警告
消息:PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20160303/pgsql' - /usr/local/lib/php/extensions/no-debug- non-zts-20160303/pgsql:无法打开共享对象文件:没有那个文件或目录
文件名:未知
这是Dockerfile:
# Dockerfile
FROM php:7.1.12-apache
MAINTAINER Me <me@myself.com>
COPY deploy/config/php.ini /usr/local/etc/php/
COPY target/myapp.tar.gz /var/www/html
RUN apt-get update
# Install Postgre PDO
RUN apt-get install -y libpq-dev …Run Code Online (Sandbox Code Playgroud) 因此,我非常困难,但非常接近于通过 Googles Cloudbuild 使用 Clasp 推送和部署 Google Apps Script 项目。因此推送和部署命令来自Googles Clasp cli,它要求您使用clasp login. 登录将在您的主目录中创建一个~/.clasprc.json使用您的凭据调用的文件。这是推送和部署所必需的。在中,cloudbuild.yaml我创建了一个替换_CLASPRC来保存这个文件的内容,并在运行构建时使用我自己的自定义图像将它写入容器。
现在对于这个问题,当 push 命令运行时,我收到以下错误,这基本上不是说我没有登录或.clasprc.json. 由于这是我遇到的唯一错误,无论问题是什么,这个问题有点难以调试。
Could not read API credentials. Are you logged in globally?
Run Code Online (Sandbox Code Playgroud)
我曾尝试将 放在.clasprc.json主目录和项目目录中,但两种方式都遇到相同的问题。我很确定该文件正在写入项目目录,因为当我尝试在我的本地运行时没有.clasp.json它抱怨它在抱怨我没有登录之前丢失了。当.clasp.json它在那里时它只抱怨我没有登录在。
该项目只是我的一个个人项目,它在 Github 上都是开源的,所以如果你想参考实际代码,这里是实际项目的链接。我的 Lil Admin和我使用的构建器My Builders。但是,您确实不需要该项目,请按照以下步骤在本地进行重现。
npm install -g @google/claspclasp login获得.clasprc.json与GCP权威性clasp create --title "My …continuous-integration google-apps-script google-cloud-platform clasp google-cloud-build
我的头开始因为时间戳和时区问题而旋转。在我的应用程序中,所有时间戳都保存为 UTC。提交时区单独保存。
环境如下:
我解决的第一个问题是 PostgreSQL 默认时区设置America/Eastern在旧金山的服务器上。所以我改用了 UTC,但这只是问题的一部分,我不能 100% 确定它做了什么。仅供参考,PostgreSQL 中的列是TIMESTAMP WITH TIME ZONE.
测试的本地化日期,即 MST 或 UTC-07:
所有测试的插入中使用的 UTC 日期:
第一次测试:--------------------------------------------------------
通过快速 SQL 插入,将输入正确的日期。当我查询时,我得到本地化日期,因为我的本地系统将其与 MST 偏移 -7 小时。
查询后日期:
这确实是我本地插入的时间。
第二次测试:--------------------------------------------------------
这就是奇怪的地方。现在,我使用与 SQL 插入中相同的 UTC 时间戳通过应用程序输入日期。
现在看看我查询时会出现什么结果:
如果使用原始 SQL 插入,则日期减去 7 小时即可得到本地时间。如果我的本地计算机从原始 UTC 时间戳中减去 7,则应用程序返回的原始 UTC 时间戳将加上 7 小时,得出:
而不是我放进去的。呵呵。。。?
由于 …