目錄
問題內容
解決方法
首頁 後端開發 Golang 為什麼檔案複製到容器後找不到

為什麼檔案複製到容器後找不到

Feb 09, 2024 am 08:24 AM
overflow

為什麼檔案複製到容器後找不到

php小編魚仔在使用容器技術時,可能會遇到一個常見問題:檔案複製到容器後找不到。這個問題通常出現在使用Docker等容器化平台時。原因可能是檔案路徑設定不正確,或是容器內部的檔案系統與宿主機不一致。解決這個問題的方法有很多種,例如使用絕對路徑,或透過共用資料夾的方式將檔案複製到容器中。在解決這個問題之前,我們需要先了解容器的檔案系統和檔案路徑的對應關係,以及如何正確設定檔路徑。

問題內容

我有一個如下所示的 dockerfile:

from golang:1.19 as builder
workdir /app
copy . .
run cgo_enabled=0 go build -v -o "hello-bin"


#from scratch
from alpine
copy --from=builder /app/hello-bin /app/hello-bin
copy --from=builder /app/start.sh /app/start.sh
workdir /app
entrypoint  [ "./start.sh" ]
登入後複製

它只是從 hello-world go 檔案建立一個二進位檔案。但是,當我嘗試使用以下 docker-compose 設定來執行此容器時,它顯示 exec ./start.sh: no such file or directory

version: "3"

services:
  hello:
    restart: always
    build:
      context: .
      dockerfile: dockerfile
登入後複製

目錄結構為

❯ tree .
.
├── dockerfile
├── docker-compose.yaml
├── go.mod
├── hello
├── init.go
└── start.sh
登入後複製

因此 start.sh 應透過 copy 載入到 <code>builder 容器中。 . 行也是如此,它應該透過 copy --from=builder /app/start.sh /app/start.sh 傳遞到第二個容器。

上下文,start.sh的內容如下:

#!/bin/bash

_main() {
  echo "start"
}

_main "$@"
登入後複製

我最困惑的部分是,如果我在 dockerfile 中將其更改為 cmd [ "ls", "-l" ] ,它實際上會列印出來

awesomeproject3-hello-1  | -rwxr-xr-x    1 root     root       1819562 May 19 02:41 hello-bin
awesomeproject3-hello-1  | -rwxrwxrwx    1 root     root            51 May 19 02:39 start.sh
登入後複製

如果我在 dockerfile 中將其更改為 entrypoint [ './hello-bin' ] ,二進位檔案也會成功運行。我只是不明白為什麼它說沒有 ./start.sh

更新:受@larsks的啟發,我注意到如果我將./start.sh 的標頭從#!/bin/bash 更改為# !/bin/sh,它會神奇地工作。我仍然很困惑這裡的根本問題是什麼,如果我想保留 bash 標頭,我應該如何修復 docker 檔案?

解決方法

發生錯誤是因為您在 start.sh 中使用了 #!/bin/bash

Alpine docker 映像預設沒有安裝 bash。它使用 Busybox shell 來代替。

您可以在容器中安裝 bash 。請參閱 Docker:如何將 bash 與 Alpine 一起使用基於docker映像?

或您可以將 #!/bin/bash 更改為 #!/bin/sh,如您在問題評論中所述。

以上是為什麼檔案複製到容器後找不到的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

比特幣誕生至今歷史價格總覽 比特幣歷史價格趨勢大全 比特幣誕生至今歷史價格總覽 比特幣歷史價格趨勢大全 Jan 15, 2025 pm 08:14 PM

比特币,作为一种加密货币,自问世以来经历了显著的市场波动。本文将提供比特币自诞生以来的历史价格总览,帮助读者了解其价格趋势和关键时刻。通过分析比特币的历史价格数据,我们可以了解市场对其价值评估、影响其波动的因素,并为未来投资决策提供依据。

比特幣誕生至今歷史價格一覽 BTC歷史價格行情趨勢圖(最新匯總) 比特幣誕生至今歷史價格一覽 BTC歷史價格行情趨勢圖(最新匯總) Feb 11, 2025 pm 11:36 PM

比特幣自 2009 年創世以來,價格經歷多次大幅波動,最高漲至 2021 年 11 月的 69,044.77 美元,最低跌至 2018 年 12 月的 3,191.22 美元。截至 2024 年 12 月,最新價格突破 100,204 美元。

2018-2024年比特幣最新價格美元大全 2018-2024年比特幣最新價格美元大全 Feb 15, 2025 pm 07:12 PM

實時比特幣美元價格 影響比特幣價格的因素 預測比特幣未來價格的指標 以下是 2018-2024 年比特幣價格的一些關鍵信息:

H5頁面製作是前端開發嗎 H5頁面製作是前端開發嗎 Apr 05, 2025 pm 11:42 PM

是的,H5頁面製作是前端開發的重要實現方式,涉及HTML、CSS和JavaScript等核心技術。開發者通過巧妙結合這些技術,例如使用&lt;canvas&gt;標籤繪製圖形或使用JavaScript控制交互行為,構建出動態且功能強大的H5頁面。

如何通過CSS自定義resize符號並使其與背景色統一? 如何通過CSS自定義resize符號並使其與背景色統一? Apr 05, 2025 pm 02:30 PM

CSS自定義resize符號的方法與背景色統一在日常開發中,我們經常會遇到需要自定義用戶界面細節的情況,比如調...

如何通過JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾? 如何通過JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾? Apr 05, 2025 pm 10:39 PM

如何使用JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾在瀏覽器的打印設置中,有一個選項可以控制是否顯�...

為什麼inline-block元素會出現錯位現象?如何解決這個問題? 為什麼inline-block元素會出現錯位現象?如何解決這個問題? Apr 04, 2025 pm 10:39 PM

關於inline-block元素錯位顯示的原因及解決方案在編寫網頁佈局時,我們常常會遇到一些看似奇怪的顯示問題。比...

Flex佈局下文字超出省略卻撐開容器?如何解決? Flex佈局下文字超出省略卻撐開容器?如何解決? Apr 05, 2025 pm 11:00 PM

Flex佈局下文字超出省略導致容器撐開的問題及解決方法在使用Flex...

See all articles