1. 創建一個 mynginx的目錄
2. 將前端代碼文件夾(比如叫 front )復制到 mynginx 目錄下
3. 在mynginx 目錄下創建一個名為Dockerfile 的文件(文件名不要改),文件內容如下:
# 使用官方的 Nginx 鏡像作為基礎鏡像
FROM nginx:latestRUN mkdir -p /app# 將工作目錄設置為 /app
WORKDIR /app# 將宿主機 front目錄下的文件復制到容器的 /app 目錄
# 注意這里不要寫絕對路徑
COPY front/* /app# 刪除nginx容器中代碼目錄中自帶的文件
RUN rm /usr/share/nginx/html/*# 將/app 中所有文件復制到 /usr/share/nginx/html/
RUN cp /app/* /usr/share/nginx/html/# 暴露 80 端口供外部訪問
EXPOSE 80# 容器啟動時運行 Nginx
CMD ["nginx", "-g", "daemon off;"]
一定要注意,COPY 這一步 ,將宿主機上front文件夾中的文件復制到容器中,front目錄一定不要寫成絕對路徑,我之前寫的是絕對路徑(/opt/myimages/mynginx/front/*)報錯如下:
ERROR: failed to solve: lstat /var/lib/docker/tmp/buildkit-mount2707332014/opt/myimages/mynginx/front: no such file or directory
可以看到 最后在執行copy命令時前面 被加上了 這個目錄,所以導致找不到front目錄了:
/var/lib/docker/tmp/buildkit-mount2707332014
最后mynginx目錄中的內容如下,可以看到front目錄下有個a.html文件:
??
4. 創建鏡像, 執行命令如下
docker build -t my-custom-nginx .
5. 運行鏡像,執行命令如下
docker run -d -p 8080:80 --name my-custom-nginx-container my-custom-nginx
6. 測試
curl? http://127.0.0.1:8080/a.html?