Uygulamaya Kaynak Kod Eklemek Ve Container Degistirme

Uygulamaya Kaynak Kod Eklenmesi ve Container’ı Değiştirme 🐳

Bir önceki seri de bir imaj oluşturup, konteyner başlatıp ve bunun üzerinden çalışan uygulamayı görmüştük.

Bu çalışan container üzerinden devam edeceğim. Çalışan konteynerları görüntülemek için pwd terminalinden:


(venv) [node1] (local) root@192.168.0.48 ~/dfAPIs/dfAPI

$ docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

a5f68b6e32be dockersamples/101-tutorial "nginx -g 'daemon of…" 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp ecstatic_hamilton

Uygulama içerisinde Değişiklik Yapma

self.fields['venue'].widget.attrs['placeholder'] = 'bir mekan türü gir..'

yerine ;

self.fields['venue'].widget.attrs['placeholder'] = 'önceki mekan türü için boş bırak..'

Sadece text değişikliğini yapıp save ettim.

Kaynak Kodumuzu Güncelleme

1.Yukardaki kod satırını güncelledim

2.Daha önce kullandığımız komutu kullanarak görüntünün güncellenmiş sürümünü oluşturalım.

docker build -t < container-name > .



venv) [node1] (local) root@192.168.0.48 ~/dfAPIs/dfAPI

$ docker build -t dj-foursquare .

Sending build context to Docker daemon 3.612MB

Step 1/7 : FROM python:3

--------

Successfully built 902eac983028

Successfully tagged dj-foursquare:latest

3.Güncellenmiş kodu kullanarak yeni bir container başlatalım.


(venv) [node1] (local) root@192.168.0.48 ~/dfAPIs/dfAPI

$ docker run -dp 3000:3000 dj-foursquare

1c5c773cef8fb48b5b5c30e906aeb34fdb21bf519f618ef0bff29e3c7e25140d

Buraya kadar, kaynak kod değişikliği ile birlikte yeni bir konteyner’ı başarıyla başlatabildim.📝

❗ Ancak ;

docker: Error response from daemon: driver failed programming external connectivity on endpoint laughing_burnell

Yukadaki kod bloğundaki gibi hata alıyorsanız, eski konteynerın remove edilmesi gerekiyor. Bu hatanın nedeni eğer bir container’ımız hala çalışıyosa yeni container başlatamıyoruz. Benim çalıştırıdğım django uygulamam 8000 portunu kullanıyordu. Uygulamayı run ettikten sonra durdurdum ve değişiklikleri yapıp tekrar build ettim ve hata almadım. Fakat başka dilde yazdığınızda portu kapatamayabilirsiniz ve arka planda sürekli açık kalabilir.

💡Sonuç olarak şöyle ki, container’ın ana bilgisayarın bağlantı noktası 8000’i kullanması ve yalnızca bir işlemin (kaplar dahil) belirli bir bağlantı noktasını dinleyebilmesidir. Bunu düzeltmek için eski container’ı kaldırmamız gerekiyor.

📝Eski Container’ımızın Değiştirilmesi

Bir containerı kaldırmak için, öncelikle o containerın durdurulması gerekir. Sonra çıkarılabilir.

  1. docker ps komutu, container ıd’si ve diğer kimlik bilgilerini bize liste olarak getirir.

[node1] (local) root@192.168.0.8 ~
$ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                NAMES
74fab2442359        dockersamples/101-tutorial   "nginx -g 'daemon of…"   45 minutes ago      Up 45 minutes       0.0.0.0:80->80/tcp   charming_hopper

2.Container’ı durdurmak için docker stop < container-id > komutunu kullanın.

[node1] (local) root@192.168.0.8 ~
$ docker stop 74fab2442359
74fab2442359

3.Container’ı durduktan sonra docker rm < container-id > komutunu kullanarak kaldırabilirsiniz.


docker rm < container-id >

4.Güncellenmiş uygulamayı başlatın. Uygulamayı başlatmadan önce login olmanızı isteyecektir. docker login yazarak giriş bilgilerinizi doğrulayın ve aşağıdaki gibi uygulamanızı başlatabilirsiniz.


docker run -dp 3000:3000 docker-name

Açılan port ile uygulamanızı açtığınızda güncellenmiş halini göreceksiniz.


Sonraki yapılacak adımlarda kalıcılıktan bahsetmeden önce, bu imajları başkalarıyla nasıl paylaşacağımızı göreceğiz.