Rumah >Peranti teknologi >industri IT >Kedalaman fungsi docker dan docker menyusun

Kedalaman fungsi docker dan docker menyusun

Lisa Kudrow
Lisa Kudrowasal
2025-02-08 09:06:11678semak imbas

The Functional Depth of Docker and Docker Compose

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:

  1. Menyebarkan contoh pengiraan Vultr menggunakan aplikasi pasaran Docker melalui portal pelanggan Vultr.

  2. Gunakan SSH untuk mengakses pelayan dengan selamat dengan pengguna sudo bukan akar.

  3. Kemas kini pelayan.

  4. Buat direktori projek baru dan masukkannya:

    <code class="language-bash">mkdir flask-redis-example
    cd flask-redis-example</code>
  5. Buat fail baru bernama

    : app.py

    <code class="language-bash">nano app.py</code>
  6. tambahkan kod berikut:

    <code class="language-python">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)</code>
    simpan dan keluar dari fail. Kod kelalang ini menyambung ke pangkalan data Redis dan meningkatkan kaunter setiap kali URL root diakses.

  7. Benarkan sambungan masuk ke port 5000 dan tambah semula firewall:

    <code class="language-bash">sudo ufw allow 5000
    sudo ufw reload</code>
  8. Buat fail baru bernama

    : requirements.txt

    <code class="language-bash">nano requirements.txt</code>
  9. tambahkan pakej berikut:

    <code>flask
    redis</code>
    simpan dan tutup fail.

  10. Buat direktori lain dalam direktori

    dan masukkannya: flask-redis-example

    <code class="language-bash"> mkdir static
     cd static</code>
  11. Buat fail baru bernama

    : styles.css

    <code class="language-bash"> nano styles.css</code>
  12. tambahkan kod berikut:

    <code class="language-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;
     }</code>
    simpan dan keluar dari fail.

  13. Buat direktori lain dalam direktori

    dan masukkannya: flask-redis-example

    <code class="language-bash"> mkdir templates
     cd templates</code>
  14. Buat fail baru bernama

    : index.html

    <code class="language-bash"> nano index.html</code>
  15. tambahkan kod berikut:

    <code class="language-html"> <!DOCTYPE html>
     
     
         <title>Flask App</title>
         <link rel="stylesheet" href="%7B%7B%20url_for('static',%20filename='styles.css')%20%7D%7D">
     
     
         <h1>Hello, World!</h1>
         <p>I have been seen {{ count }} times.</p>
     
     </code>
    simpan dan keluar dari fail.

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.

  1. menggunakan pendaftaran kontena Vultr.

  2. Buat manifes Docker dalam direktori

    : flask-redis-example

    <code class="language-bash">nano Dockerfile.flask</code>
  3. Tambahkan konfigurasi berikut:

    <code class="language-dockerfile">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"]</code>
    simpan dan keluar dari fail.

  4. Bangun Docker Image:

    <code class="language-bash">docker build -t flask-app .</code>
  5. Log masuk ke pendaftaran Vultr Container anda:

    <code class="language-bash">docker login <url> -u <user> -p <password></password></user></url></code>
    Pastikan untuk menggantikan

    , <url></url> dan <user></user>, yang disediakan di bahagian Gambaran Keseluruhan Pendaftaran Vultr Container anda. <password></password>

  6. tag docker Image:

    <code class="language-bash">mkdir flask-redis-example
    cd flask-redis-example</code>
  7. memusingkan cermin ke pendaftaran kontena Vultr:

    <code class="language-bash">nano app.py</code>

    Selepas menolak imej Docker, sahkan bahawa imej wujud di bahagian "Repositori" dari pendaftaran kontena Vultr di papan pemuka Vultr.

  8. Buat fail baru bernama docker-compose.yaml:

    <code class="language-python">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)</code>

    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.

  9. Bina Docker Compose File:

    <code class="language-bash">sudo ufw allow 5000
    sudo ufw reload</code>

    Selepas proses binaan selesai, lawati aplikasi Flask pada http: // : 5000. Cuba menyegarkan laman web beberapa kali dan perhatikan sama ada kiraan lawatan halaman meningkat.

Lebih banyak penggunaan pendaftaran kontena Vultr

  • pendaftaran kontena Vultr dengan Docker
  • Pendaftaran Vultr Container dengan Kubernetes
  • membina imej kontena vllm
  • membina imej kontena llama.cpp
  • membina imej kontena pytorch

Amalan Terbaik

  • simpan docker-compose.yaml Fail -fail yang dianjurkan dengan baik dan didokumentasikan dengan baik.
  • Gunakan jumlah yang dinamakan untuk meneruskan data dan bukannya mengikat direktori tuan rumah.
  • Gunakan pembolehubah persekitaran untuk menyimpan data sensitif seperti kata laluan dan kekunci API.
  • Gunakan perintah terbina dalam Docker mengarang, seperti 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn