Python与Docker的串啊

本文记录了将Python脚本放入Docker容器运行的过程,包括编写Dockerfile和docker-compose.yml文件。通过Dockerfile创建镜像,设置环境变量、安装依赖并定义挂载点。docker-compose.yml用于从镜像启动容器,实现定时执行Python脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日接到需求,要把python文件定期执行,放到docker中运行。虽然不知道为什么要放到docker中(放到宿主机上新建一个虚拟环境,使用nohup创建后台还不是一样的吗),但还是学习了一下docker镜像和容器的创建过程,踩了少许坑,以此记录。

Dockerfile


FROM ubuntu:16.04
MAINTAINER 16w
ADD ./ScriptIncremental /opt
###设置编码格式
ENV LANG C.UTF-8
#更新apt
RUN apt-get update && apt-get install -y
#安装依赖
RUN apt-get install gcc -y && apt-get install make -y
&& apt-get install vim -y && apt-get install openssl -y
&& apt-get install libssl-dev -y && apt-get install python3-pip -y
#RUN pip3 install --upgrade pip
VOLUME ["/opt/log"]
RUN pip3 install -r /opt/requirements

以上参数中,
FROM 表示从那个基础镜像开始做起
MAINTAINER展示了谁创建了这个镜像
ADD 将宿主机文件添加到镜像指定目录下,注意,是其是将宿主机指定目录的子文件和目录复制到镜像指定路径,而不是连带指定目录一起复制
ENV 设置指令集环境变量 上边一条是将系统默认编码设置为UTF-8。用于避免运行python3文件时默认编码为ascii码而出现的编译问题。
RUN 表示执行此条命令
VOLUMN 表示添加一个挂载点,用于与宿主机文件进行挂载

参考官方文档:
https://docs.docker.com/engine/reference/builder

我们知道,Dockerfile是创建镜像的过程,而docker-compose.yml是从镜像到容器的过程

docker-compose.yml


version: ‘3’
services:
log_drop_records_insert:
container_name: log_drop_records_insert
image: log_drop_records_insert:16w
build:
context: .
dockerfile: Dockerfile
volumes:
- /python_docker/log:/opt/log
environment:
- TZ=Asia/Shanghai
command:
python3 /opt/Script2InsertIncrementalDate.py --path /opt/env &

说明如下:
version:docker-compose文件版本
container_name:指定此容器名字
image:指定镜像名字,因为我们的镜像是build出来的,所以规定一个名字,冒号后面为标签
build:为此个容器创建的镜像,子标签context是Dockerfile目录的路径,文件名须为Dockerfile
volumns:挂载点,冒号前为主机目录,冒号后为容器目录
environment:环境变量
command:表示创建完容器后执行的命令

文件整体目录结构:
.
├── docker-compose.yml
├── Dockerfile
├── log
│ ├── errors.log
│ └── time.txt
└── ScriptIncremental
├── env
├── init.py
├── log
│ ├── errors.log
│ └── time.txt
├── requirements
└── Script2InsertIncrementalDate.py

此时,我们要启动整个服务就可以直接docker-compose up -d了。
docker-compose指定文件的参数为 -f :docker-compose -f ./docker-compose.yml up -d
进入docker容器:docker exec -it {containerid} /bin/bash

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值