Python 2.7 開發環境設置
Python 軟體基金會(Python Software Foundation)已在 2020/01/1,正式終止對 Python 2.7 的支援。那要如何在本地環境,進行基於 Python 2.7 的專案維護或開發呢?第一個想到的就是使用自製的 docker image。爬文找到這篇 Setting Up a Python Remote Interpreter Using Docker ,可以用 VS code 跟 PyCharm 進行搭配 Python 2.7 的 docker image 進行開發👍。
環境 Environment
- macOS 12.3.1
- Docker version 20.10.12, build e91ed57
- Task version: v3.12.0 (h1:viFy8kdDZ2iTcpTuxzzJCeKtTGt9U+5iXMVIpLjvIro=)
事情準備
開始動手前,先準備好一下檔案。以下檔案都放在 Git repository: jerry771230/my-py2.7-dev
Dockerfile 內容,
- 只安裝必要的 packages
- 建立 root 的密碼
- 設定可以通過 SSH 以帳號密碼登入
- 啟動
ssh
服務
1 | FROM python:2.7-slim-buster |
備註:
在文件 Develop on a remote Docker host 內有提到,VS code 可以使用SSH
登入 container 進行開發。如果不需要 SSH 登入,其相關 packages 跟服務是都不需要的。
Taskfile.yml 後續指令都是使用 task
來執行,
1 | version: "3" |
基礎的 Python 2.7 docker image 建立後,就可以使用 docker-compose
進行操作, docker-compose.yml
如下,
1 | version: "3.7" |
Python 2.7 專案需要安裝的 packages 就靠 code\requirement.txt
管理了,
1 | Flask |
開始製作專案用 Python 2.7 docker image
1. 建立 “py2.7-dev” docker image
1 | task build |
建立完成後, 列出 “py2.7-dev” docker image,
1 | docker images | grep py2.7 |
2. 運行 container
使用剛才建立的 docker image py2.7-dev:latest
來運行 container
1 | task up |
顯示已運行的 containers
1 | docker ps -a |
3. SSH to container
使用 SSH
命令登入 “py2.7” container,
1 | task login |
此時需要輸入密碼才能登入。
可以使用 authorized_key
進行 SSH 登入,這樣就可以免除輸入密碼。使用下方命令,將 key 複製到 container,
1 | ssh-copy-id -p 2222 root@127.0.0.1 |
完成後再次使用 SSH
命令登入,此時不需要密碼就可以登入 container 內。
1 | task login |
4. Docker 命令進入 container
在沒有安裝及設定 SSH
前,使用 docker exec
可以直接進入 container。
1 | task exec |
備註:
沒有特別需求時,使用docker exec
比SSH
方便,也不需要安裝SSH
相關的 packages(佔空間)。
5. 安裝 Python 專案需要的 packages
在進入 container 後,執行下列命令,
1 | cd /srv &&\ |
完成後離開 container,
1 | exit |
6. 提交(Commit)修改到 image
列出運行中的 container,
1 | docker ps -a |
將 container NAMES 為 ‘py2.7’ 的 CONTAINER ID
複製起來。
使用 docker commit
將修改內容建立成新的 docker image。以下是命令的語法,
1 | docker commit [CONTAINER ID] [new_image_name] |
執行下列命令,將建立新的 docker image 命名成 my-py2.7-dev
,
1 | docker commit f8dc4ba33f2e my-py2.7-dev |
完成後,列出 docker images,可以看到 my-py2.7-dev
image 的容量長大了不少 :)
1 | docker images | grep py2.7 |
7. 使用新的 image
先移除運行中的 container,
1 | task down |
修改 docker-compose.yml
,將 ‘services > py > image: py2.7-dev:latest’ 改成剛才建立的 ‘image: my-py2.7-dev:latest’。
1 | services: |
再次運行 container,
1 | task up |
列出運行中的 container,
1 | docker ps -a |
以上步驟完成後,就可以依賴 docker image - ‘my-py2.7-dev:latest’,來設定 VS code 或 PyCharm 以 docker container 進行 Python 2.7 的開發(希望如此 XD)。
其他好用的 docker 命令
Get IP Address of container
1 | docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' py2.7 |
Use docker
command to run container
1 | docker run -td --name py2.7 \ |