使用Docker和Python来设置环境
首先
本次使用Docker建立Python的环境。以前在实际工作中使用Docker运行过Go语言,觉得非常方便,所以这次决定使用Docker来搭建Python的环境。
环境
macOS Ventura 13.0.1
Docker Desktop for Mac
Docker version 20.10.21
Docker Compose version v2.13.0
VS code
目标
本次目标是构建docker容器并输出“Hello World”。
构成
这是目录结构。
.
├── Dockerfile
├── docker-compose.yml
├── .env
└── backend
└── app.py
安装Docker Desktop
请安装适合您自己环境的软件。

创建工作目录
创建一个用于创建Dockerfile和docker-compose.yml的工作目录。
mkdir docker_python && cd docker_python
下一步,您将在工作目录中创建一个名为“backend”的目录来放置Python代码。
mkdir backend
由于目录已经准备好,现在可以开始编写代码了。
创建Dockerfile
我会创建一个用于构建Docker容器的Dockerfile。
FROM python:3.9.10
RUN mkdir -p /root/backend
WORKDIR /root/backend
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
在第一行中,指定了Python的版本。
WORKDIR用作容器中放置Python代码的工作目录,并创建了/root/backend目录并指定为工作目录。
这样一来,后续的RUN命令将在WORKDIR中执行。
设置环境变量
创建一个.env文件并将以下代码输入,以设置Python代码的路径环境变量。
BACKEND_PATH=./backend
.env文件是一种特殊文件,其中设置的环境变量可以从Dockerfile或即将创建的docker-compose.yml等文件中引用。
通过将路径作为环境变量拆分,使其具有通用性。
创建docker-compose.yml文件
这是使用docker-compose命令时的配置文件。
version: '3.9'
services:
python3:
restart: always
build: .
container_name: 'python'
working_dir: '/root/backend'
tty: true
volumes:
- ${BACKEND_PATH}:/root/backend
build
buildでDockerfileの場所を指定しています。今回はカレントディレクトリを表しています。
container_name
container_name には任意のコンテナ名を指定してください。
後ほど使用するコンテナ実行コマンド docker -exec -it {コンテナ名} のコンテナ名となります。
working_dir
working_dirはDockerfileのWORKDIRと同じ階層を指定します。コンテナ内のコマンドを実行した時のデフォルト階層になります。
volumes
volumesにはローカルのbackendディレクトリを/root/backendにマウントする記述を書いています。マウントするとローカルのbackend配下のファイルがコンテナから参照されるようになります。
进行容器构建
构建容器时,请使用以下命令。
docker-compose build
docker_python % docker-compose build
[+] Building 7.4s (10/10) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 32B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/python:3.9.10 7.2s
=> [auth] library/python:pull token for registry-1.docker.io 0.0s
=> [1/5] FROM docker.io/library/python:3.9.10@sha256:3aae21920963df3205fba69826cc07fcf2fad91f9e062add9217 0.0s
=> CACHED [2/5] RUN mkdir -p /root/backend 0.0s
=> CACHED [3/5] WORKDIR /root/backend 0.0s
=> CACHED [4/5] RUN pip install --upgrade pip 0.0s
=> CACHED [5/5] RUN pip install --upgrade setuptools 0.0s
=> exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:f7bcfd7c1350206351a0fa429539f2b8a50dc5464e89f35b1bed222d46e06d1b 0.0s
=> => naming to docker.io/library/docker_python-python3 0.0s
如果输出类似上述日志,则表示 docker-compose 构建已完成。
容器的启动.
启动容器的命令如下。
docker-compose up -d
在中文中对以下内容进行释义:
使用docker-compose up命令来启动容器。
-d选项表示在后台运行。
docker_python % docker-compose up -d
[+] Running 2/2
⠿ Network docker_python_default Created 0.1s
⠿ Container python3 Started 0.4s
运行 Python
让我们在容器中运行 Python 程序。
在后端目录中创建一个名为 app.py 的文件。
这次我们将输出”Hello World”。
print("Hello World")
请执行以下命令来运行程序。
docker exec -it python3 python app.py
这是执行结果。
docker_python % docker exec -it python3 python app.py
Hello World
你好世界,显示了”Hello World”。
容器的结束
使用下面的命令停止容器。
docker-compose down
最终
本次使用Docker搭建了Python的环境。
由于在AWS Lambda上可以使用docker容器,可以直接将本地容器迁移到AWS Lambda上使用,个人认为继续使用和掌握它是很有必要的。
将来,我还想在增加前端部分的同时,使用Docker和Python来构建CRUD应用以及增加各种功能。