Pythonの実行環境が欲しいなあと思った
きっかけは、ULIDの文字列が欲しいのだけど、さくっと出してくれるのが見つからなかった
ならば、作ってしまえば良いってことで
- 参考 ソート可能なUUID互換のulidが便利そう https://qiita.com/kai_kou/items/b4ac2d316920e08ac75a
環境
- Docker Desktop が使えること、Windowsであればwsl2が動いていること
- Dockerイメージは alpine で Python のバージョンは3.8以上
- Dockerfile は GitHubにあるdocker-libraryやdocker-hubからもってくる
- Python3.9でalpineならば、https://github.com/docker-library/python/blob/fe2130938363f307081496dc5930c29c3ef9ddba/3.9/alpine3.14/Dockerfile が
Dockerfile
なのでそれを使う
- Python3.9でalpineならば、https://github.com/docker-library/python/blob/fe2130938363f307081496dc5930c29c3ef9ddba/3.9/alpine3.14/Dockerfile が
- VSCodeでRemote Container使う
上記のを一部抜粋
FROM alpine:3.14
# ensure local python is preferred over distribution python
ENV PATH /usr/local/bin:$PATH
# http://bugs.python.org/issue19846
# > At the moment, setting "LANG=C" on a Linux system *fundamentally breaks Python 3*, and that's not OK.
ENV LANG C.UTF-8
# runtime dependencies
RUN set -eux; \
apk add --no-cache \
# install ca-certificates so that HTTPS works consistently
ca-certificates \
# and tzdata for PEP 615 (https://www.python.org/dev/peps/pep-0615/)
tzdata \
;
・・・
・・・
・・・
CMD ["python3"]
- Linux Debianで良い場合はお手軽に以下のように記述量は減らせる
FROM python:3
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD [ "python", "./your-daemon-or-script.py" ]
devcontainer.json
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.187.0/containers/docker-existing-dockerfile
{
"name": "Existing Dockerfile",
// Sets the run context to one level up instead of the .devcontainer folder.
"context": "..",
// Update the 'dockerFile' property if you aren't using the standard 'Dockerfile' filename.
"dockerFile": "../Dockerfile",
"settings": {},
"extensions": [],
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Uncomment the next line to run commands after the container is created - for example installing curl.
// "postCreateCommand": "apt-get update && apt-get install -y curl",
// docker container name (Identify Dev Containers)
"runArgs": [
"--name=python3.9-alpine-dev_container"
]
}
コンテナを動かす
- VSCodeからDockerfileのあるディレクトリを開いて、
Reopen in Container
で開く。参考は、 公式ドキュメント - コンテナ初期化が始まる(少し時間かかる、数分
- VSCodeのターミナルで接続して、
python --version
後は、.py
や pythonコマンドライン使う
$ python --version
Python 3.9.6
$ cd /workspaces
$ python -m venv venv
$ . venv/bin/activate
$ pip install ulid-py
- pythonコマンドライン使って
python
import ulid
id1 = ulid.new()
id1
id1.str
実行例
937f59a63c54:/workspaces/venv# python --version
Python 3.9.6
937f59a63c54:/workspaces/venv# cd ..
937f59a63c54:/workspaces# . venv/bin/activate
(venv) 937f59a63c54:/workspaces# python
Python 3.9.6 (default, Jul 21 2021, 02:01:12)
[GCC 10.3.1 20210424] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import ulid
>>> id1 = ulid.new()
>>> id1
<ULID('01FB4827H7K34PAZ2209M6WBCE')>
>>> id1.str
'01FB4827H7K34PAZ2209M6WBCE'
Python環境つくったのは、2019年末以来かな