Docker 是一個優秀的跨平臺應用容器化技術,提供輕量級的應用容器化解決方案,使得應用模塊化、開發效率高、部署速度快、環境復制方便,但在 Docker 容器內運行時卻難以使用傳統的調試工具進行調試。所以,本文將介紹如何用 Docker 進行主機調試。
在實際應用中,我們往往需要在 Docker 容器中進行代碼調試,但是在容器內部調試會受到很多限制。因此,比較可行的方案是對容器內的代碼進行修改,然后在宿主機上通過斷點調試等方式進行調試。
# 在 Dockerfile 中添加調試代碼 COPY . /app RUNecho "PYTHONPATH=/app" >> /etc/environment
在 Dockerfile 中通過echo
命令向容器內的 /etc/environment 文件中添加 PYTHONPATH 變量,這樣宿主機在掛載該目錄時便可自動引入該變量。
# 構建 Docker 鏡像 docker build -t myapp:latest .
構建 Docker 鏡像,并將鏡像命名為 myapp:latest。
# 運行 Docker 容器 docker run -it -v /host/path:/app myapp:latest bash
使用docker run
命令,在容器內運行 bash,同時掛載主機目錄以實現主機調試。
在進入容器后,如果代碼需要運行,可以在容器內使用 Python 等解釋器運行代碼。代碼修改后,可以在宿主機上進行斷點調試。我們可以通過類似如下命令掛載遠程調試端口(默認為5678
):
# 在容器啟動前開啟遠程調試 python -m ptvsd --host 0.0.0.0 --port 5678 --wait -m myapp
使用ptvsd
模塊開啟 Python 遠程調試功能,開啟成功后容器便可以通過本地網絡與暴露端口相對應(例如,使用 127.0.0.1:5678)進行調試。
通過以上方法,可以較為方便地進行 Docker 容器內的代碼調試。如有問題,歡迎討論。
上一篇2048代碼邏輯html
下一篇用jq寫css樣式怎么寫