据我所知,不可能以非root用户身份在部署在heroku上的docker容器内写入磁盘(创建非root用户并通过dockerfile整理目录在我的本地机器上工作正常)
我正在尝试创建一个简单的api,以提取视频,使用ffmpeg处理它们并存储它们。 FFMPEG需要其输出使用磁盘路径(我尝试使用s3预签名的url,但它们不适用于输出多个动态命名文件的HLS)。
容器在本地部署和运行精美……
Heroku以非root用户身份运行docker build指令,但是挂载的卷仍然是root所拥有,并且无法由应用程序中执行命令的用户写入。
创建容器的文件结构后,我不知道如何更改目录权限。通过执行heroku.yml,构建管道会在github部署上自动开始,并且那里的权限都不够。
在将docker部署到heroku时,人们不只是完全放弃使用本地磁盘 ,对吗?
这是我的heroku.yml:
build:
docker:
web: ./web/Dockerfile
config:
LC_ALL: C.UTF-8
LANG: C.UTF-8
run:
worker:
command:
- rq worker --url redis://redistogo:xxxxxx/ my_queue
image: web
和显着的dockerfile(请注意chmod和chown在本地可以正常工作):
FROM ubuntu:18.04
WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
COPY . .
RUN adduser -q worker
# RUN chmod -R 0777 /usr/src/app # fails with insufficient permission
# RUN chown -R worker /usr/src/app # fails with insufficient permission
USER worker