Docker, bir geliştirme aracı olarak giderek daha popüler hale geliyor. Docker, konteyner hareketine yeni bir soluk getirdi. Geliştiriciler, hızlı ve öğrenmesi kolay olduğu için kullanmayı severler. Geliştirme ekiplerinin, zaman ve kaynak israfı konusunda endişelenmeden standart ortamları paylaşmasına yardımcı olur.
Geliştiriciler, bir Docker kapsayıcısında herhangi bir ortamı kurabilir, kapsayıcıyı bir görüntü olarak kaydedebilir ve geliştirme ekipleriyle kolayca paylaşabilir. İşlem, tek bir kapsayıcıyla harika çalışıyor. Ancak, çok kapsayıcılı ortamların bakımı zordur. Bir Docker Compose çözümü sağlar.
Docker Compose ile geliştiriciler, yapılandırmayı birden çok hizmetle eşlemek için bir YAML dosyası tanımlayabilir. Daha sonra tek bir komutla birden çok kapsayıcı hizmeti başlatabilirler. Çok kapsayıcılı uygulamalarla çalışma sürecini basitleştirir.
ön koşul
Temel Docker bilgisine sahip olduğunuzu varsayıyoruz. Aksi takdirde, bkz. Ubuntu’da Docker nasıl kurulur ve kullanılır. Örnekler WordPress, MySQL, Flask ve Python’dur. Ancak, bu araçlar hakkında ön bilgi gerekli değildir.
Docker oluşturma süreci: hızlı bir genel bakış
- Uygulama ortamını belirleyin: Kolayca tekrarlanabilir hale getirmek için uygulama ortamını tanımlamak üzere Dockerfile’ı kullanın.
- Docker derleme ortamını tanımlayın: Uygulamadaki hizmetleri tanımlamak için docker-compose.yml kullanın.
- uygulamayı çalıştırın: Çok kapsayıcılı bir uygulama çalıştırmak için liman işçisi kullanın.
Örnek docker yapı dosyası
sürüm: '3' hizmetler: db: görüntü: mysql: 5.7 birim: - db_data:/var/lib/mysql yeniden başlatma: her zaman ortam: MYSQL_ROOT_PASSWORD: rootpassword123 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress_user MYSQL_PASSWORD: wordpress_password wordpress: bağımlı_on: - db resmi: wordpress: en son bağlantı noktaları: - "8000:80" yeniden başlatma: her zaman ortam: WORDPRESS_DB_HOST: db: 3306 WORDPRESS_DB_USER: wordpress_user WORDPRESS_DB_PASSWORD: wordpress_parola. birimler: db_data:
Yukarıdaki docker-compose.yml dosyası docker up ile çağrılırsa, MySQL veritabanı hizmetine bağlanan bir WordPress hizmeti oluşturulur.
Docker Derleme komutları
kullanabilirsiniz liman işçisi oluşturma – yardım Docker Compose komutunu bulmak için
Docker Compose ne zaman kullanılır?
Şu anda, Docker çoğunlukla geliştirme ortamlarında kullanılmaktadır. Docker Compose’un bazı yaygın kullanımları şunları içerir:
1. Modelleme ve geliştirme
Uygulama prototipleme ve geliştirme, standart ortamların olmaması nedeniyle yavaşlar. Geliştiriciler genellikle aynı ortamı birden çok kez kurmak için zaman harcamak zorunda kalır. Ayrıca, ortam parametrelerini ayarlamak için kılavuzları okumak uzun zaman alıyor.
Docker Compose, süreci basitleştirir. Geliştirme ekipleri, ortamı yapılandırdıktan sonra Docker dosyalarını kuruluş genelinde paylaşabilir. Yapılandırma yönetimi sorunlarına harcanan zamandan çok tasarruf sağlayabilir.
2. Test ve otomasyon süreçleri
Sürekli Entegrasyon ve Sürekli Teslimat (CI/CD), günümüzün hızlı geliştirme ortamlarında standart operasyonlar haline geliyor. Kendi kendini test etme, CI/CD’nin önemli bir bileşenidir. Docker Compose, otomatikleştirilmiş test sürecini tanımlamaya yardımcı olur. Yeni hizmetler başlatmanın tüm karmaşıklıkları, liman işçisi yapılandırma dosyalarına düzgün bir şekilde yerleştirilebilir. Test kullanıcıları, test sonuçlarını topladıktan sonra geçici hizmetleri başlatmak, komut dosyalarını çalıştırmak ve hizmetleri yok etmek için bu dosyaları kullanabilir. Hizmetleri manuel olarak başlatmak, zaman alıcı ve hataya açık olduğundan zaman kazandırır.
3. Gelecekteki üretimin dağılımı
Docker çoğunlukla geliştirme ortamlarında kullanılır. Ancak Docker’ın işlevselliği daha güçlü hale geldikçe, Docker daha çok üretim düzeyindeki işler için kullanılacaktır. Docker Compose, tek ana bilgisayar dağıtımları için değerli bir araç olabilir.
Alıştırma: Basit bir web uygulaması
Docker Compose’u denemek için Python tabanlı basit bir web uygulamasında elimizi deneyelim. Web uygulamasının ziyaret edilme sayısını izlemek için bellek içi Redis veritabanına bağlanan bir uygulama oluşturmak için Flask web çerçevesini kullanacağız.
Dizin yapısı şöyle görünecektir:
basit_app. ├── içerik │ ── Dockerfile. │ └── kodu. │ ── simple_app.py │ └── gereksinimler.txt └── docker-compose.yml
Yukarıdaki dizin yapısı temel bir uygulama için gerekli değildir. Ancak, bilgilerin düzenlenmesinin Docker Compose’u daha verimli bir şekilde uygulamaya nasıl yardımcı olabileceğini gösterir.
Adım 1: Dizin yapısını ve dosyaları oluşturun
Dizin yapısını ve gerekli dosyaları oluşturalım:
$ mkdir simple_app. $ mkdir basit uygulama/içerik. $ mkdir simple_app/content/code $ touch simple_app/docker-compose.yml. $ simple_app/content/Dockerfile öğesine dokunun. $ simple_app/content/code/simple_app.py öğesine dokunun. $ simple_app/content/code/requirements.txt dosyasına dokunun.
Dokunma komutu yalnızca boş dosyalar oluşturur. Klasörlere manuel olarak gidebilir ve dosyalar oluşturabilirsiniz.
Adım 2: Web Uygulama Kodu
Kod klasörü, web uygulamasının kodunu içerir. Aşağıdakileri koy basit_app.py bir dosya:
şişeden ithalat şişesi. redis'ten içe aktar Redis uygulaması = Flask (__name__) redis = Redis (ana bilgisayar="redis", bağlantı noktası=6379) @app.route(" def merhaba(): sayı = redis.incr('isabet') dönüş 'Docker Compose Derslerine hoş geldiniz!Bu siteyi {} kez ziyaret ettiniz.\n'.format (sayım) if __name__ == "__main__": app.run (host="0.0.0.0", debug=True)
Yukarıdaki uygulama, sayfanın kaç kez ziyaret edildiğini gösteren bir karşılama sayfası oluşturur. Ziyaret sayacı, Redis veritabanında saklanır. Redis, varsayılan dinleme bağlantı noktası olarak 6379 numaralı bağlantı noktasını kullanır. Sonra, doldurun Gereksinimler. Txt bir dosya:
şişe. redis.
Bu, pip’in web kapsayıcısına Python bağımlılıkları kurmasına izin verecektir. Hizmetimizi başlatmanın bir parçası olarak pip’i çalıştıracağız.
3. Adım: Docker dosyası
dolduruyor simple_app/content/Dockerfile Aşağıdaki kod ile:
python'DAN: 3.6.3-jessie. EKLE ./kod /kod. WORKDIR / kodu. RUN pip install -r gereksinimleri.txt. CMD ["python", "simple_app.py"]
yukarıda liman işçisi dosyası Aşağıdakileri başarır:
- Python’dan bir görüntü oluşturur: 3.6.3-jessie. Yerel olarak mevcut değilse, Docker Hub’dan indirilecektir.
- Öğeleri kopyala basit_uygulama/içerik/kod içeri /kod Bende var
- atama /kod kapsayıcıdaki çalışma dizini olarak
- Python, bağımlılıkları yüklemek için pip kullanır
- Kapsayıcıyı çalıştırmak için varsayılan başlangıç noktasını ayarlar piton basit_uygulama.py.
4. Adım: Docker Oluşturun
dolduruyor simple_app/docker-compose.yml aşağıdaki kod ile dosya:
sürüm: '3' hizmetler: web: build: ./content portları: - "5000:5000" ciltler: - ./content/code:/code redis: image: "redis: alpine"
NS liman işçisi iml oluştur Dosya iki kapsayıcı tanımlar: web ve redis. Docker Compose biçimi sürüm 3’ü kullanır.
web hizmeti için:
- kullanarak bir web hizmeti oluşturur. simple_app/content/Dockerfile
- Web kapsayıcısının 5000 numaralı bağlantı noktasını ana bilgisayarın 5000 numaralı bağlantı noktasına iletir. Port 5000, Flask uygulamaları için varsayılan porttur.
- abla basit_uygulama/içerik/kod yüklendi /kod konteyner üzerinde. Bunun anlamı, herhangi bir şeyi değiştirirseniz basit_uygulama/içerik/kodyansıtılacak /kod web kapsayıcısındaki klasör.
Redis hizmeti için:
- Redis hizmetini oluşturmak için Docker Hub’dan redis:alpine görüntüsünü kullanır.
5. Adım: Docker Compose Kullanarak Uygulamaları Başlatma
Uygulama dağıtılmaya hazır. İtibaren Basit uygulama klasör, aşağıdaki komutu çalıştırın:
$ liman işçisi-oluştur
Çıktı şöyle başlamalıdır:
$ docker-compose up Web oluşturma. Adım 1/5: python'dan: 3.6.3-jessie. 3.6.3-jessie: Kitaplıktan/python'dan çekme. 85b1f47fba49: İndiriliyor [> ] 12.43MB/52.6MB. 5409e9a7fa9e: İndirme tamamlandı. 661393707836: İndiriliyor [> ] 13.71MB/43.23MB. 1bb98c08d57e: İndiriliyor [> ] 1.081MB/134.7MB...
Tüm görüntüleri oluşturup çalıştırdıktan sonra aşağıdakileri görmelisiniz:
Durum: Redis: alpine için daha yeni bir resim indirildi. simpleapp_redis_1 oluşturuluyor... simpleapp_web_1 oluşturuluyor... simpleapp_redis_1 oluşturuluyor. simpleapp_web_1 oluşturuluyor... tamamlamak. simpleapp_redis_1, simpleapp_web_1'e ekleniyor. redis_1 | 1:A 21 Ekim 02:06:33.639 * Bağlantıları kabul etmeye hazır. web_1 | * Devam ediyor (Çıkmak için CTRL+C tuşlarına basın) web_1 | * Stat ile yeniden başlatılıyor. web_1 | * Hata ayıklayıcı etkin! web_1 | * Hata Ayıklayıcı PIN'i: 237-189-083.
Uygulamayı şu adrese giderek test edebilirsiniz: 5000:. Sayfayı birden çok kez yenilerseniz, ziyaret sayısını yansıtmalıdır. Çalışan hizmetlerin veya kapsayıcıların durumunu kontrol edebilirsiniz:
$ docker ps KONTEYNER KİMLİK GÖRÜNTÜ KOMUT OLUŞTURULDU DURUM PORT İSİMLERİ. 22852e0ad98a redis: alpine "docker-entrypoint..." 5 dakika önce Yukarı 5 dakika 6379/tcp simpleapp_redis_1. d51739d0a3ac simpleapp_web "python simple_app.py" 5 dakika önce 5 dakika kadar 0.0.0.0:5000->5000/tcp simpleapp_web_1.
Bash kabuğunuzu simpleeapp_web_1’de başlatırsanız (kapsayıcı adınız farklı olabilir), çalışma dizinine/koduna giriş yapacaksınız:
$ docker exec -it simpleapp_web_1 bash [e-posta korumalı]:/kod# ls. gereksinimleri.txt simple_app.py. [e-posta korumalı]:/kod#
NS /kod Dizinin içeriğini yansıtmalıdır. basit_uygulama/içerik/kod Yukarıda gördüğümüz gibi (basit_app.py E Gereksinimler. Txt).
güncelleme yaparsanız basit_app.pygelen hat:
geri dönmek 'Docker Compose Derslerine hoş geldiniz!Bu siteyi {} kez ziyaret ettiniz.\n'.format (sayı)
NS:
geri dönmek 'Docker Compose Derslerine hoş geldiniz!merak ediyor musun?
Bu siteyi {} kez ziyaret ettiniz.\n'.format (sayı)
5.000’den fazla yansıma:
6. Adım: Hizmetleri kapatın
Aşağıdakileri kullanarak uygulamayı durdurabilirsiniz:
$ docker-oluşturma durağı. simpleapp_redis_1 durduruluyor... tamamlamak. simpleapp_web_1 durduruluyor... tamamlamak.
Kurulu modüller devam edecek. Aşağıdaki komutu kullanarak hacimler dahil tüm kapları kaldırabilirsiniz.
$ docker-compose down --volume simpleapp_redis_1 kaldırılıyor... tamamlamak. simpleapp_web_1 kaldırılıyor... tamamlamak. Simpleapp_default ağı kaldırılıyor.
sonumuz! Docker Compose’un temellerinde uzmanlaştınız.
gelecek iş
Daha fazla çalışma için aşağıdaki belgelere bakın:
- liman işçisi belgeleri
- Docker Derleme Dosyası Referansı
- Docker Derleme Ağı
Referanslar:
Linux Kaynak LLC, [e-posta korumalı]
1210 Kelly Park Çevresi, Morgan Hill, CA 95037
Diğer gönderilerimize göz at
[wpcin-random-posts]
İlk Yorumu Siz Yapın