我正在尝试将dockerfile放入我的主要启动项目AppMain
的子目录中。 AppMain
有一个名为AppDependency
的依赖项目。当dockerfile位于AppMain
的根目录中时,所有文件都可以正常工作,但是当它嵌套在AppMain
的子目录中时,它将失败并显示
4>Step 5/20 : COPY ["AppMain/AppMain.csproj", "AppMain/"]
4>COPY failed: stat /var/lib/docker/tmp/docker-builder453314675/AppMain/AppMain.csproj: no such file or directory
这对我来说很有意义,因为它嵌套在一个子目录中,所以我只是在COPY命令前面添加了一个“ ../”,但是导致了以下上下文异常:
4>COPY failed: Forbidden path outside the build context: ../AppMain/AppMain.csproj ()
好吧,这也很有意义,因为docker文档指出上下文从dockerfile所在的位置开始,但这使我提出了真正的问题。
AppReference
项目(显然位于docker所在位置的上方)时它为什么不会失败?文件位于上下文之外,因为它必须上一个目录然后下到AppReference
项目?下面列出了整个docker文件。
FROM mcr.microsoft.com/dotnet/core/runtime:2.2-stretch-slim AS基础
WORKDIR / app
FROM mcr.microsoft.com/dotnet/core/sdk:2.2-stretch AS构建
WORKDIR / src
COPY [“ AppMain / AppMain.csproj”,“ AppMain /”]
COPY [“ AppReference / AppReference.csproj”,“ AppReference /”]
运行dotnet还原“ AppMain / AppMain.csproj”
复制。
WORKDIR“ / src / AppMain”
运行dotnet构建“ AppMain.csproj” -c版本-o / app
从FROM构建AS发布
RUN dotnet发布“ AppMain.csproj” -c版本-o / app
FROM基本AS最终版本
WORKDIR / app
COPY --from = publish / app。
ENTRYPOINT [“ dotnet”,“ AppMain.dll”]
答案 0 :(得分:1)
在使用docker build -t xxx .
构建子目录时,仅.
中的内容将提交给docker build
的docker守护进程。父文件夹中的内容将无法提交到Docker引擎进行构建。
因此,您需要使用cd ..
将执行目录移回父文件夹,然后使用next进行构建,然后它将.
发送到引擎,该docker build -t xxx -f ./YOUR_Subdirectory/Dockerfile .
现在是父文件夹的内容(但是您现在需要指定dockerfile,例如this)
<ImageView
android:id="@+id/poster_image"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@id/buttons_group"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/buttons_group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/poster_image"
app:layout_constraintBottom_toTopOf="@id/imdb_placeholder"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="parent">
<Button
android:id="@+id/trailer_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/ic_play"
android:foreground="?android:attr/selectableItemBackground"
android:scaleType="centerCrop"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/watch_later_button"
app:layout_constraintTop_toTopOf="@id/buttons_group"
app:layout_constraintBottom_toBottomOf="@id/buttons_group"/>
<Button
android:id="@+id/watch_later_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/ic_watch_later"
android:foreground="?android:attr/selectableItemBackground"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="@id/buttons_group"
app:layout_constraintBottom_toBottomOf="@id/buttons_group"
app:layout_constraintStart_toEndOf="@+id/trailer_button"
app:layout_constraintEnd_toStartOf="@+id/share_movie_button"/>
<Button
android:id="@+id/share_movie_button"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/ic_share"
android:foreground="?android:attr/selectableItemBackground"
android:scaleType="centerCrop"
app:layout_constraintTop_toTopOf="@id/buttons_group"
app:layout_constraintBottom_toBottomOf="@id/buttons_group"
app:layout_constraintStart_toEndOf="@+id/watch_later_button"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
答案 1 :(得分:-3)
这真的很有效。 这是什么 ? 安全警告:您正在从Windows针对非Windows Docker主机构建Docker映像。添加到构建上下文的所有文件和目录将具有“ -rwxr-xr-x”权限。建议仔细检查并重置敏感文件和目录的权限。