复制 dockerfile 文件在超集中添加指令

Copy dockerfile files ADD instruction in superset

我有以下 DockerFile

FROM apache/superset:pr-19860
RUN pip install elasticsearch-dbapi
RUN superset superset fab create-admin \
               --username admin \
               --firstname Superset \
               --lastname Admin \
               --email admin@superset.com \
               --password admin

RUN superset superset db upgrade
RUN superset superset load_examples
RUN superset superset init
ADD https://github.com/domsoltel/superset/blob/436efe104938d0ca555bb99c586f3d2675a69a59/config.py /app/superset/
ADD https://github.com/domsoltel/superset/blob/436efe104938d0ca555bb99c586f3d2675a69a59/viz.py /app//superset/

我必须修改 config.pyviz.py 文件以使其按我希望的方式工作。这些文件已经存在于超集容器中,但我需要修改几个变量

如果我这样做 docker cp 它工作得很好,从我的电脑到容器它工作得很好但是使用 dockerfile 我得到以下错误

PermissionError: [Errno 13] Permission denied: '/app/superset/config.py'

我认为这可能是权限问题,我该如何解决?

因为您正在使用 docker-compose;然后使用卷映射这些文件

you_service:
  image: .....
  ....
  ....
  volumes:
    - /home/config.py:/app/superset/config.py
    - /home/viz.py:/app/superset/viz.py

请注意,卷 必须 是使用映射文件的绝对路径(与映射目录不同)

另外注意:如果文件是容器in-use;那么无论如何你都会得到权限错误!

超集图像设置为 运行 作为用户 superset,没有完全权限。因此,在您进行任何更改之前,您应该切换到 root,然后在完成后返回到 superset 用户。

您可以在图片页面底部查看示例(在 'How to extend this image' 下):https://hub.docker.com/r/apache/superset

FROM apache/superset:pr-19860
USER root
RUN pip install elasticsearch-dbapi
RUN superset superset fab create-admin \
               --username admin \
               --firstname Superset \
               --lastname Admin \
               --email admin@superset.com \
               --password admin

RUN superset superset db upgrade
RUN superset superset load_examples
RUN superset superset init
ADD --chown=superset:superset https://raw.githubusercontent.com/domsoltel/superset/436efe104938d0ca555bb99c586f3d2675a69a59/config.py /app/superset/
ADD --chown=superset:superset https://raw.githubusercontent.com/domsoltel/superset/436efe104938d0ca555bb99c586f3d2675a69a59/viz.py /app/superset/
RUN chmod 644 /app/superset/config.py && chmod 644 /app/superset/viz.py
USER superset

我还将文件的 URL 更改为原始版本。使用您拥有的 URL,您将添加 HTML 个无法运行的文件版本。