Bina aplikasi flask multi-kontainer menggunakan Docker Compose dan Vultr Container Registry
Docker Compose membolehkan pengguna menjalankan dan menentukan aplikasi multi-kontainer menggunakan fail konfigurasi tunggal. Ia memudahkan proses menubuhkan dan menguruskan pelbagai bekas, menjadikannya lebih mudah untuk membangun, menguji, dan menggunakan aplikasi. Artikel ini akan membimbing anda untuk membuat aplikasi flask dengan dua bekas, menguruskan imej docker aplikasi anda menggunakan Registry Container Vultr (VCR), dan menguruskan beberapa bekas dengan fungsi multi-kontainer yang dikarang Docker.
Penciptaan aplikasi sampel
Langkah -langkah berikut akan membimbing anda untuk membuat aplikasi sampel:
mkdir flask-redis-example cd flask-redis-example
: app.py
nano app.py
from flask import Flask, render_template import redis app = Flask(__name__) redis_client = redis.Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis_client.incr('hits') return render_template('index.html', count=count) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
sudo ufw allow 5000 sudo ufw reload
: requirements.txt
nano requirements.txt
<code>flask redis</code>
dan masukkannya: flask-redis-example
mkdir static cd static
: styles.css
nano styles.css
body { font-family: Arial, sans-serif; text-align: center; background-color: #f4f4f4; margin: 0; padding: 0; } h1 { color: #333; margin-top: 50px; } p { font-size: 18px; color: #666; }
dan masukkannya: flask-redis-example
mkdir templates cd templates
: index.html
nano index.html
<!DOCTYPE html> <html> <head> <title>Flask App</title> <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}"> </head> <body> <h1>Hello, World!</h1> <p>I have been seen {{ count }} times.</p> </body> </html>
Menggunakan pendaftaran kontena Vultr
Dalam bahagian ini, anda akan membuat pendaftaran kontena Vultr, memuat naik imej Docker anda ke pendaftaran, dan sediakan fail Docker untuk menyediakan perkhidmatan pangkalan data Flask dan Redis.
: flask-redis-example
nano Dockerfile.flask
FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY app.py . COPY static/ ./static/ COPY templates/ ./templates/ EXPOSE 5000 CMD ["python", "app.py"]
docker build -t flask-app .
docker login <url> -u <user> -p <password>
, <url>
dan <user>
, yang disediakan di bahagian Gambaran Keseluruhan Pendaftaran Vultr Container anda. <password>
tag docker Image:
mkdir flask-redis-example cd flask-redis-example
memusingkan cermin ke pendaftaran kontena Vultr:
nano app.py
Selepas menolak imej Docker, sahkan bahawa imej wujud di bahagian "Repositori" dari pendaftaran kontena Vultr di papan pemuka Vultr.
Buat fail baru bernama docker-compose.yaml
:
from flask import Flask, render_template import redis app = Flask(__name__) redis_client = redis.Redis(host='redis', port=6379) @app.route('/') def hello(): count = redis_client.incr('hits') return render_template('index.html', count=count) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
simpan dan keluar dari fail. Konfigurasi YAML di atas mentakrifkan dua perkhidmatan web
dan redis
. Perkhidmatan web
membina aplikasi flask dari direktori semasa (.) Dan memetakan pelabuhan kontena 5000 ke port 5000 tuan rumah. Ia juga menyatakan bahawa perkhidmatan web
bergantung kepada perkhidmatan redis
. redis
Perkhidmatan menggunakan imej Redis Docker rasmi dari Docker Hub.
Bina Docker Compose File:
sudo ufw allow 5000 sudo ufw reload
Selepas proses binaan selesai, lawati aplikasi Flask pada http: //
Lebih banyak penggunaan pendaftaran kontena Vultr
Amalan Terbaik
docker-compose.yaml
Fail -fail yang dianjurkan dengan baik dan didokumentasikan dengan baik. docker-compose up
, docker-compose down
, dan docker-compose ps
untuk menguruskan bekas. Kesimpulan
Dalam artikel ini, anda membuat aplikasi flask dengan dua bekas, menggunakan pendaftaran kontena Vultr untuk menguruskan imej docker aplikasi, dan mengambil kesempatan daripada fungsi multi-kontainer Docker yang dikarang untuk menguruskan pelbagai bekas.
Artikel ini ditaja oleh Vultr. Vultr adalah platform pengkomputeran awan swasta terbesar di dunia. Kegemaran di kalangan pemaju, Vultr telah menyediakan pengkomputeran awan global yang fleksibel dan berskala, GPU awan, penyelesaian penyimpanan logam dan awan kepada lebih daripada 1.5 juta pelanggan di 185 negara. Ketahui lebih lanjut mengenai Vultr
Atas ialah kandungan terperinci Kedalaman fungsi docker dan docker menyusun. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!