同步本地文件到服務器上的Docker容器
要將本地文件同步到服務器上的Docker容器中,有幾種常用方法:
1. 使用 docker cp
命令
# 將本地文件復制到運行中的容器
docker cp /本地/文件/路徑 容器名或ID:/容器內/路徑# 示例
docker cp ./app.py mycontainer:/app/
2. 使用掛載卷(推薦方法)
在運行容器時掛載本地目錄:
docker run -v /本地/路徑:/容器內/路徑 鏡像名
或者對已存在的容器:
docker run -d -v /本地/路徑:/容器內/路徑 --name mycontainer 鏡像名
3. 使用 scp
先傳到服務器,再復制到容器
# 先傳到服務器
scp /本地/文件/路徑 用戶名@服務器IP:/服務器/路徑# 然后從服務器復制到容器
ssh 用戶名@服務器IP "docker cp /服務器/路徑 容器名或ID:/容器內/路徑"
4. 使用 Docker 卷(適合生產環境)
# 創建卷
docker volume create myvolume# 運行容器并掛載卷
docker run -v myvolume:/容器內/路徑 鏡像名# 將本地文件復制到卷中
docker run --rm -v myvolume:/目標路徑 -v /本地/路徑:/源路徑 alpine cp -r /源路徑/. /目標路徑
5. 使用 rsync 直接同步到容器(需容器內安裝rsync)
rsync -avz -e "ssh" /本地/路徑/ 用戶名@服務器IP:"docker exec -i 容器名或ID mkdir -p /容器內/路徑 && docker exec -i 容器名或ID rsync -avz --delete - /容器內/路徑"
選擇哪種方法取決于你的具體需求和環境。對于開發環境,掛載卷(方法2)通常是最方便的,因為它能實時同步更改。對于生產環境,建議使用方法4創建專用卷。