Kuinka ajaa python -skripti Dockerin avulla

Python -skriptien suorittaminen on yksi yleisimmistä automaation tehtävistä. Eri järjestelmien riippuvuuksien hallinta voi kuitenkin olla haastavaa. Siellä Docker tulee sisään. Docker antaa sinun pakata Python -komentosarjan ja kaikkiin tarvittavat riippuvuudet säiliöön varmistaen, että se toimii samalla tavalla millä tahansa koneella. Tässä vaiheittaisessa oppaassa kävelemme läpi tosielämän Python-komentosarjan luomisprosessin ja ajamme sen Docker-säiliön sisällä.

Sisällysluettelo

Miksi käyttää Dockeria python -skripteihin

Kun työskentelet Python -skriptien kanssa, asiat voivat tulla sotkuiseksi/monimutkaiseksi erittäin nopeasti. Eri projektit tarvitsevat erilaisia kirjastoja, ja se, mikä koneellasi toimii, saattaa rikkoa jonkun toisen. Docker ratkaisee sen pakkaamalla käsikirjoituksen ja sen ympäristön. Joten sen sijaan, että sanot "se toimii koneellani", voit olla varma, että se toimii samalla tavalla.

Se pitää järjestelmäsi myös puhtaana. Sinun ei tarvitse asentaa jokaista python -pakettia maailmanlaajuisesti tai huolehtia version konflikteista. Kaikki pysyy säiliön sisällä.

Jos otat tai luovutat komentosarjan jollekin toiselle, Docker tekee myös sen helpon. Ei asennusohjeita, ei "asenna tätä ja tuo". Vain yksi komento, ja se toimii.

Kirjoita Python -komentosarja

Luotaan projektihakemisto Python -komentosarjan ja DockerFile -palvelun pitämiseksi. Kun olet luotu, siirry tähän hakemistoon käyttämälläcdkomento:

mkdir docker_file_organizer
cd docker_file_organizer

Luo skripti nimeltä “Ordence_Files.py” hakemisto- ja ryhmätiedostojen skannaamiseksi kansioihin niiden tiedostolaajennusten perusteella:

nano organize_files.py

Liitä seuraava koodi ”Ordence_File.py” -tiedostoon. Tässä käytämme kahta ennalta rakennettua Python-moduulia, nimeltäänosjashutil, tiedostojen käsitteleminen ja hakemistojen luominen dynaamisesti:

import os
import shutil

SOURCE_DIR = "/files"

def organize_by_extension(directory):
try:
for fname in os.listdir(directory):
path = os.path.join(directory, fname)
if os.path.isfile(path):
ext = fname.split('.')[-1].lower() if '.' in fname else 'no_extension'
dest_dir = os.path.join(directory, ext)
os.makedirs(dest_dir, exist_ok=True)
shutil.move(path, os.path.join(dest_dir, fname))
print(f"Moved: {fname} → {ext}/")
except Exception as e:
print(f"Error organizing files: {e}")

if __name__ == "__main__":
organize_by_extension(SOURCE_DIR)

Tässä käsikirjoituksessa järjestämme tiedostoja tietyssä hakemistossa niiden laajennusten perusteella. KäytämmeosModuuli luetella tiedostot, tarkista, onko kukin kohde tiedosto, purkaa sen laajennus ja luo kyseisten laajennusten mukaan nimettyjä kansioita (jos niitä ei vielä ole). Sitten käytämmeshutilModuuli siirtää jokainen tiedosto vastaavaan kansioon. Jokaisesta siirrosta tulostamme viestin, joka näyttää tiedoston uuden sijainnin.

Luo Dockerfile

Luo nyt DockerFile määrittelemään ympäristön, jossa käsikirjoituksesi suoritetaan:

FROM python:latest
LABEL maintainer="[email protected]"
WORKDIR /usr/src/app
COPY organize_files.py .
CMD ["python", "./organize_files.py"]

Käytämme tätä DockerFileä luodaksesi säiliön pythonilla, lisäämällä komentosarjamme ja varmista, että skripti toimii automaattisesti, kun säilö alkaa:

Rakenna Docker -kuva

Ennen kuin voit rakentaa Docker -kuvan, sinun on ensin asennettava Docker. Suorita sen jälkeen seuraava komento pakataksesi kaiken telako -kuvaksi:

Suositeltu lukeminen:Kuinka luoda ensimmäinen Docker -kuva Dockerfile -sovelluksella

sudo docker build -t file-organizer .

Se lukee Dockerfile -ohjelmamme ja yhdistää Python -asennuksen ja skriptimme, jotta ne ovat valmiita ajamaan yhdessä säilökuvassa:

Luo näytekansio tiedostoilla

Jos haluat nähdä komentosarjamme toiminnassa, luomme testikansion nimeltä “Stoppe_files” muutamalla erityyppisellä tiedostolla. Loimme nämä tiedostot vain tehdäksemme kansiosta hieman sotkuista ja nähdä kuinka Python -komentosarjamme käsittelee sitä:

mkdir ~/sample_files
touch ~/sample_files/test.txt
touch ~/sample_files/image.jpg
touch ~/sample_files/data.csv

Suorita käsikirjoitus Dockerin sisällä

Lopuksi ajamme Docker -säiliömme ja asennamme näytekansioon siihen. Se-vLippu asentaa paikallisen “~/näytteen_files” -hakemiston säiliön “/tiedostoihin” -hakemistoon, jonka avulla Python -komentosarja voi lukea ja järjestää tiedostoja isäntäkoneellasi:

docker run --rm -v ~/sample_files:/files file-organizer

Tässä käytämme--rmVaihtoehto poistaa säiliö automaattisesti sen valmistumisen jälkeen, joka säästää levytilaa:

Lopulta käytämmetreeKomento tarkistaa, onko tiedostot lajiteltu kansioiksi niiden laajennusten perusteella:

tree sample_files

Huomaa:SetreeKomentoa ei ole asennettu useimpiin järjestelmiin. Voit asentaa sen helposti paketinhallintalla kutenaptUbuntussa,brewMacOS: lla ja niin edelleen.

Viimeiset ajatukset

Kun Python -komentosarja on käynnissä Dockerissa, olet kaikki asetettu hyödyntämään täysimääräisesti puhdasta, kannettavaa ja johdonmukaista kehitysasennusta. Voit helposti käyttää tätä säilöä koskevaa työnkulkua muihin automaatiotehtäviin, jakaa komentosarjan huolehtimatta riippuvuuksista ja pitää järjestelmäsi sotkuisena. Seuraavassa vaiheessa harkitse, kuinka rakentaa monikirjoitustelakalokuvia, aikataulua CRON-työpaikkojen säilöihin tai integroida skriptejä muihin työkaluihin, kuten Git, Jenkins tai jopa pilviympäristöihin automaatio- ja käyttöönottoprosessin virtaviivaistamiseksi.

Related Posts