Selamlar, bu yazımda bir Spring uygulamasını hızlı bir şekilde Docker ile deploy etmeyi öğreneceğiz.
Rehber öncesinde bilgisayarınızda Docker’ın kurulu olması gerektiği için, eğer henüz kurulumu yapmadıysanız sizi şuraya alalım.
Başlayalım
Spring uygulamamızı oluşturarak başlayalım. Bunun için favori yönteminiz ile bir Spring uygulamasını lokalinizde başlatabilir veya benim gibi Intellij IDEA ile Spring Initialzr kullanabilirsiniz. Projemiz çok ufak olacağı için yalnızca Spring Web seçmemiz yeterli olacaktır. Intellij üzerinden New Project -> Spring Initialzr seçerek ilerleyim o halde. Web seçelim ve projemizi oluşturalım.
Basit bir Controller yazalım
@SpringBootApplication @RestController public class DockerApplication { @RequestMapping public String main() { return "Merhaba Docker!"; } public static void main(String[] args) { SpringApplication.run(DockerApplication.class, args); } }
Controller notasyonumuzu direkt olarak Main sınıfımıza verdik çünkü basit tutmak istedim. Şimdi asıl amacımız olan Docker ile bu Spring uygulamamızı hayata geçirme işlemine başlayabiliriz!
Docker ile Deploy
Docker’da bir container kaldırmak amacıyla Dockerfile isminde ki dosyalar kullanılır. Bu dosyalar içerisinde gerekli konfigürasyonlar barındırılır ve bunlar kapsamında container’lar çalıştırılır. Şimdi kendi container’ımız için tanımlarımızı yapalım. Proje dizininde veya resources dosyası altında Dockerfile ismine bir dosya oluşturalım.
FROM openjdk:8-jdk-alpine ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} spring.jar ENTRYPOINT ["java","-jar","/spring.jar"]
Bunun ne yaptığını açıklayacak olursak; ilk satırda container’ımızın hangi imaj altında çalışacağını belirliyoruz. Eğer java8 kullanmadıysanız openjdk:11 gibi de belirtebilirsiniz. İkinci satırda ise maven install sonucu oluşan .jar dosyamızın yolunu argüman olarak tanımlıyor ve üçüncü satırda bu dosyayı container içerisine spring.jar ismi ile kopyalıyoruz. Son satırda ise java uygulamamızı komut satırı üzerinden çalıştırıyoruz.
mvnw package
Artık jar dosyamızı da oluşturduktan sonra Docker işlemlerimize geçebiliriz.
Docker
Öncelikle Dockerfile dosyanızı oluşturduğunuz yere terminal ile gelin ve devamında bu komutları sırasıyla çalıştırın.
docker build -t mySpringContainer . docker run -p 8080:8080 mySpringContainer
Komutlarımız sırasıyla; ilk satırda mevcut Dockerfile’ımız ile verdiğimiz ayara göre bir imaj dosyası oluşturur. İkinci satırda ise container içerisinde ki 8080 portunu dışarıya açar ve bunu da kendi bilgisayarımızın 8080 portundan dinlemesini sağlar.
İlk başta eğer daha önceden kullanacağımız imajı indirmemişseniz farklı bir Dockerfile ile şimdi sizin için Docker tarafından ufak bir indirme yapılacak ve devamında komut satırından bir takım çıktılar alacaksınız.Eğer buraya kadar herhangi bir hata yapmadıysanız tarayıcınızı açıp localhost:8080 adresinden test edebilirsiniz.
Docker container’ımızın durumuna da şu komut ile bakabiliriz:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 81c723d22865 mySpringContainer "java -jar ..." 59 seconds ago Up 57 seconds 0.0.0.0:8080->8080/tcp red_cheese
Herkese iyi çalışmalar!