Dockerfile是:
FROM nginx COPY html /usr/share/nginx/html
Dockerfile在pwd目录下(即home/ubuntu/app),使用以下命令时:
docker build -t mynginx .
我犯了一个错误:复制失败:stat /var/lib/docker/tmp/docker-builder344/html:没有这样的文件或目录。如何修改docker源代码的构建上下文?
mwg9r5ms1#
Docker build only look files in Dockerfile file context,这意味着构建将从Dockerfile所在的位置复制/home/ubuntu/app/。所以最好把你的html和/home/ubuntu/app放在这个位置,因为docker build会把上下文的tar发送到docker守护进程,所以建议保持上下文最小化。
/home/ubuntu/app/
html
/home/ubuntu/app
nzrxty8p2#
docker build -t mynginx .会期望在当前目录中找到Dockerfile。此外,Dockerfile指令使用的相对路径将相对于当前目录。您可以将构建上下文路径设置为不同的路径docker build -t mynginx [some_folder_path]。Docker会在那里搜索Dockerfile。您可以使用docker build -f [path_to_dockerfile] -t mynginx [some_folder_path]选项修改Dockerfile的路径
docker build -t mynginx [some_folder_path]
docker build -f [path_to_dockerfile] -t mynginx [some_folder_path]
ohtdti5x3#
如果你使用vscode,可能会有一个解决方案-安装Docker扩展并打开它在浏览器中,您将看到一个下拉菜单的上下文-见下文vscode docker context drop down menu
3条答案
按热度按时间mwg9r5ms1#
Docker build only look files in Dockerfile file context,这意味着构建将从Dockerfile所在的位置复制
/home/ubuntu/app/
。所以最好把你的
html
和/home/ubuntu/app
放在这个位置,因为docker build会把上下文的tar发送到docker守护进程,所以建议保持上下文最小化。nzrxty8p2#
docker build -t mynginx .
会期望在当前目录中找到Dockerfile。此外,Dockerfile指令使用的相对路径将相对于当前目录。您可以将构建上下文路径设置为不同的路径
docker build -t mynginx [some_folder_path]
。Docker会在那里搜索Dockerfile。您可以使用docker build -f [path_to_dockerfile] -t mynginx [some_folder_path]
选项修改Dockerfile的路径ohtdti5x3#
如果你使用vscode,可能会有一个解决方案-
安装Docker扩展并打开它
在浏览器中,您将看到一个下拉菜单的上下文-见下文
vscode docker context drop down menu