最近在使用 Docker 部署應(yīng)用程序的過(guò)程中遇到了一個(gè)問(wèn)題,就是在容器內(nèi)找不到文件。下面我將詳細(xì)說(shuō)明問(wèn)題的背景和解決方法。
時(shí)序圖是我們需要部署的應(yīng)用程序的目錄結(jié)構(gòu):
app/ ├── Dockerfile ├── requirements.txt └── app.py
我們使用 Dockerfile 來(lái)構(gòu)建鏡像,Dockerfile 的內(nèi)容如下:
FROM python:3.7 WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . CMD ["python", "app.py"]
構(gòu)建鏡像并成功運(yùn)行鏡像,但是發(fā)現(xiàn)程序在運(yùn)行時(shí)無(wú)法找到 app.py 文件。使用命令ls
查看容器內(nèi)的目錄結(jié)構(gòu),發(fā)現(xiàn)文件確實(shí)沒(méi)有被復(fù)制到容器內(nèi)。以下是 Dockerfile 中的錯(cuò)誤代碼:
COPY . .
修改 Dockerfile,將復(fù)制文件的代碼改為以下代碼:
COPY ./app.py .
重新構(gòu)建鏡像并運(yùn)行容器,此時(shí)可以正常訪問(wèn)應(yīng)用程序。