项目线上、Win 下环境没问题,在 Mac 的 Docker 下各种问题。

2021-02-20 20:27:35 +08:00
 tlerbao

先报告本人菜鸡一枚 本来在 Mac 下使用 homestead 做开发环境写点 php 和 vue,听说 docker 各种神,最近开始折腾 docker,整体比较顺利,环境也都跑起来了。

问题是一样的项目,一样的代码,线上和 Windows 下都没问题。

在我这个 docker 下就有问题

两个 php 容器 一个 7.3 一个 5.6,7.3 下的项目目前没发现问题,5.6 下的一个旧项目只要执行到阿里云 OSS uploadFile 方法就好像会让整个 php5.6 的容器挂掉,网站直接打不开了,代码和报错如下。

try {
    $ossClient = new OssClient($config['accessKeyId'], $config['accessKeySecret'], $config['endpoint']);
    // 走到 uploadFile 就挂掉,是$file['tmp_name']文件、目录相关权限的问题?
    $res = $ossClient->uploadFile($config['bucket'], $ossFileName, $file['tmp_name']);
    //...

docker 容器日志

[20-Feb-2021 20:05:32] WARNING: [pool www] child 9, script '/www/ShengXin/CRM/index.php' (request: "POST /index.php") executing too slow (3.063820 sec), logging

[20-Feb-2021 20:05:32] NOTICE: child 9 stopped for tracing

[20-Feb-2021 20:05:32] NOTICE: about to trace 9

[20-Feb-2021 20:05:32] ERROR: pread() failed: I/O error (5)

[20-Feb-2021 20:05:32] NOTICE: finished trace of 9
1230 次点击
所在节点    Docker
3 条回复
leimao
2021-02-21 08:29:08 +08:00
你这么一说,最近有个朋友在我项目里反映他用 Mac 做 Dockerfile Build 失败,但是我在 Linux 机器上根本重复不出他的问题。
https://github.com/leimao/ONNX-Runtime-Inference/issues/1

Windows 用 Docker 的话,如果没记错是基于 Linux 虚拟机的?虚拟机的话那问题一般不大。
tlerbao
2021-02-21 08:54:39 +08:00
@leimao
经过一晚上的测试,发现原因似乎还有可能是目录或文件权限的问题,看下面注释说明,真的是奇怪了。
```
$ossClient = new OssClient($config['accessKeyId'], $config['accessKeySecret'], $config['endpoint']);
// 这里的第三个参数如果我写死,写成我在容器 /tmp 目录手动创建的文件 如 /tmp/test 代码就炮通了
// 但是第三个参数如果写成下面这样 也就是$file['tmp_name'] 这个$file = $_FILES["file"],从表单选择的文件就会卡死
$res = $ossClient->uploadFile($config['bucket'], $ossFileName, $file['tmp_name']);
```
leimao
2021-02-21 14:20:57 +08:00
@tlerbao Docker 普遍需要 root 权限。我没用过 Mac,但是 Mac 估计会有更严格的安全设定。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX