当我在Dockerfile中使用 COPY 命令覆盖特定文件时(在这种情况下,我试图在保存时在SQLAlchemy Editor中更改警报,这只是其中一项更改我要执行),更改在代码和Docker容器外壳中可见,但在运行代码时不显示。
在docker文件中,我已经在dockerfile中已经存在的RUN命令之前添加了复制命令行。
...
COPY actions.js /usr/local/lib/python3.6/site-packages/superset/static/assets/src/SqlLab/actions.js
RUN chmod +x /superset-init.sh
我要复制的文件本身与所需的Dockerfile放在同一目录中,并进行了以下更改(不广泛,这只是为了确认更改已在实际处理中)< / p>
之前:
export function saveQuery(query) {
const url = '/savedqueryviewapi/api/create';
$.ajax({
type: 'POST',
url,
data: query,
success: () => notify.success(t('Your query was saved')),
error: () => notify.error(t('Your query could not be saved')),
dataType: 'json',
});
return { type: SAVE_QUERY };
}
之后:
export function saveQuery(query) {
const url = '/savedqueryviewapi/api/create';
$.ajax({
type: 'POST',
url,
data: query,
success: () => notify.success(t('Your query was saved and stored')),
error: () => notify.error(t('Your query could not be saved')),
dataType: 'json',
});
return { type: SAVE_QUERY };
}
如前所述,我尝试使用docker COPY命令复制代码,但这没有用。复制标准HTML文件(而不是这些JS文件)时,它可以工作。
复制命令
COPY actions.js /usr/local/lib/python3.6/site-packages/superset/static/assets/src/SqlLab/actions.js
如果此方法有效,则警报应该更改,并且我对JS函数所做的任何其他更改都应该可见。
更新
解决方案可能在于将nvm,node和npm添加到我的dockerfile中,以便监视对Javascript文件的更改。
答案 0 :(得分:0)
因此,如果容器中的文件 正常(如您在上面的评论中所述),而您仍然看不到应用程序中的更改,那么我只能想到一个可能的原因:您是否已清除缓存或重新构建应用程序以便将其考虑在内?
检查实际运行的应用程序的源代码,您将得到解决。
答案 1 :(得分:0)
将以下行添加到我的 Dockerfile 中,使更改通过前端。
RUN apt-get update && apt-get install -y \
nano \
curl \
...
# Install nodejs for custom build
# https://superset.incubator.apache.org/installation.html#making-your-own-build
# https://nodejs.org/en/download/package-manager/
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
&& apt-get install -y nodejs
RUN cd ../usr/local/lib/python3.6/site-packages/superset/static/assets \
&& npm install \
&& npm ci \
&& npm run build \
&& rm -rf node_modules
据我了解,问题是我的前端的更改尚未编译。在构建中添加这些行,以编译对JS或JSX文件所做的更改。
我通过在此处查看Dockerfile来添加了这些添加内容:https://github.com/apache/incubator-superset/blob/master/contrib/docker/Dockerfile
我还必须添加 package.json 文件,因为存在的文件包含无效的打包行。
COPY package.json /usr/local/lib/python3.6/site-packages/superset/static/assets/package.json