Sebelum memahami parameter kontena docker, kita mesti memahami parameter baris arahan python dan cara pembangun mengaksesnya. Argumen baris arahan sangat berguna apabila kita ingin mengawal skrip Python di luar program.
# sys will allow us to access the passed arguments import sys # sys.argv[0] access the first argument passed that is the python script name print("\nFile or Script Name is :", sys.argv[0]) # print arguments other than the file name print("\nArguments passed:", end = " ") for i in range(1, len(sys.argv)): print(sys.argv[i], end = " ") # Lowercase operation on the passed arguments for i in range(1, len(sys.argv)): print(sys.argv[i].lower(), end = " ")
#python3 main.py HELLO THIS IS TUTORIALSPOINT
File or Script Name is : main.py Arguments passed: HELLO THIS IS TUTORIALSPOINT hello this is tutorialspoint
Kami mempunyai cara berbeza untuk menyampaikan hujah baris arahan kepada bekas docker. Sebahagian daripada mereka disebut langkah demi langkah di bawah.
Caranya ialah menggunakan titik masuk dengan fail docker dan ubah hala titik masuk itu ke fail python untuk dilaksanakan. Selepas itu, hanya lulus parameter python yang diperlukan semasa menjalankan bekas docker.
FROM python WORKDIR /app COPY . /app/ ENTRYPOINT ["python3", "main.py"]
#docker build -t arg_py .
Sending build context to Docker daemon 8.192kB Step 1/4 : FROM python ---> fa9122485d1d Step 2/4 : WORKDIR /app ---> Using cache ---> 9e9708fe1d43 Step 3/4 : COPY . /app/ ---> aea9ecf32f55 Step 4/4 : ENTRYPOINT ["python3", "main.py"] ---> Running in 864440fa7988 Removing intermediate container 864440fa7988 ---> d6e31e5606b8 Successfully built d6e31e5606b8 Successfully tagged arg_py:latest
#docker run --name mycontainer arg_py HELLO FROM TUTORIALSPOINT
File or Script Name is : main.py Arguments passed: HELLO FROM TUTORIALSPOINT hello from tutorialspoint
Arahan docker run memberikan kita beberapa ciri yang luar biasa, salah satunya ialah pembolehubah persekitaran. Di sini kita akan menggunakan pembolehubah persekitaran ini untuk menghantar data ke skrip python dalaman pada bekas docker.
Membuat skrip python kali ini akan sangat serupa dengan contoh pertama. Daripada mengimport modul "sys", kami akan mengimport modul "os" untuk mendapatkan pembolehubah persekitaran. Buat fail python dan tampal kod berikut.
import os #declare some variables for environment variable #os.getenv will fetch the environment variables from the container. userName = os.getenv("User_Name") passWord = os.getenv("Pass_Word") #Now print the variables that has been fetched. print("Running with user: %s" % userName) print("Your password: %s" % passWord) #Apply some operation print(userName.upper()) print(passWord.upper())
Simpan fail di atas sebagai main.py
Bina fail docker untuk mencipta imej baharu menggunakan kod python ini. Fail docker ini adalah sama seperti yang kami buat sebelum ini, cuma menukar kod python dalam main.py.
#docker build -t env_img .
Sending build context to Docker daemon 3.072kB Step 1/4 : FROM python ---> fa9122485d1d Step 2/4 : WORKDIR /app ---> Using cache ---> 9e9708fe1d43 Step 3/4 : COPY . /app/ ---> 31f98d53c161 Step 4/4 : ENTRYPOINT ["python3", "main.py"] ---> Running in bec1681a6842 Removing intermediate container bec1681a6842 ---> 5dd89b0c7985 Successfully built 5dd89b0c7985 Successfully tagged env_img:latest
Gunakan pembolehubah persekitaran yang disebut dalam skrip python semasa menjalankan bekas. Docker run mempunyai bendera "-e" untuk menyebut sebarang pembolehubah persekitaran dan kita boleh menyebut beberapa pembolehubah persekitaran sekaligus
#docker run -e User_Name="TutorialsPoint" -e Pass_Word="secret" --name env_cont env_img
Running with user: TutorialsPoint Your password: secret TUTORIALSPOINT SECRET
Ini adalah cara kita boleh menghantar argumen baris arahan dan pembolehubah persekitaran kepada bekas python yang berjalan pada daemon docker dengan bantuan klien docker.
Atas ialah kandungan terperinci Bagaimana untuk menghantar hujah baris arahan ke bekas Python Docker?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!