复制 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.py
和 viz.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 个无法运行的文件版本。
我有以下 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.py
和 viz.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 个无法运行的文件版本。