docker-compose 是設定與啟動多個容器的 docker 應用程式工具。使用 docker-compose up -d 啟動 container 服務時,遇到「/usr/bin/python3.4: bad interpreter: No such file or directory」錯誤訊息。重新安裝 docker-compose 即可解決。
Docker icon by Icons8 |
錯誤狀況
在包含 Dockerfile 與 docker-compose.yml 檔案的目錄下,使用命令提示字元輸入指令
$ docker-compose up -d
遇到錯誤訊息
-bash: /usr/bin/docker-compose: /usr/bin/python3.4: bad interpreter: No such file or directory
瞭解問題狀況
檢查 python3.4 是否存在
$ ls /usr/bin/python3.4
確認 python3.4 並未存在
ls: cannot access /usr/bin/python3.4: No such file or directory
作業系統實際存在的 python 版本是 python3.7
$ which python3
/usr/bin/python3
$ /usr/bin/python3 -V
Python 3.7.9
$ ln -s /usr/bin/python3 /usr/bin/python3.4$ /usr/bin/python3.4 -VPython 3.7.9
$ docker-compose up -d
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 7, in <module>
from compose.cli.main import main
ModuleNotFoundError: No module named 'compose'
問題尚未解決,刪除「符號連結」的捷徑,還原原本的環境
$ rm /usr/bin/python3.4
解決方式
網路文章提到需要重新安裝 docker,決定先只重安裝 docker-compose,依照官方文件的安裝說明
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
指令加上版本選項 --version 確認結果回傳版本號,代表完成安裝 docker-compose
$ /usr/local/bin/docker-compose --version
docker-compose version 1.29.2, build 5becea4c
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
輸入啟動 container 服務指令
$ /usr/local/bin/docker-compose up -d
$ docker-compose up -d
沒有出現錯誤狀況。
後來又遇到相同錯誤
$ /usr/bin/docker-compose --version
-bash: /usr/bin/docker-compose: /usr/bin/python3.4: bad interpreter: No such file or directory
重新安裝 docker-compose,再重新建立符號連結即可
$ sudo rm /usr/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
docker-compose version 1.29.2, build 5becea4c
版本資訊
- CentOS Linux release 7.9.2009 (Core)
- Docker version 20.10.13, build a224086
- Python 3.7.9
參考資料
- Overview of Docker Compose | Docker Documentation
- ln -- 建立連結指令 - Linux 技術手札
- docker-compose up, bad interpreter, is looking for the wrong path for python executable - Stack Overflow
留言
張貼留言