Docker Desktop 4.19 telah rilis! Apa lagi yang baru ya?

Docker Init semakin bertambah fitur loh!

Bervianto Leo Pratama
5 min readMay 3, 2023
Photo by Dominik Lückmann on Unsplash

Apakah teman-teman ingat post saya sebelumnya mengenai Docker Dekstop 4.18 yang membawa fitur baru mengenai docker init ? Jika belum membacanya, yuk baca yuk agar lebih paham.

Singkatnya

Singkatnya, saya akan membahas fitur-fitur yang berkaitan dengan Windows maupun Linux ya. Walaupun ada fitur-fitur yang berkaitan dengan macOS juga loh, tapi apa daya, belum ada mesinnya nih. :’)

Jadi ada beberapa yang akan saya bahas, yaitu:

  • Penambahan fitur di docker init , menambah dukungan untuk Node maupun Python.
  • Docker Scout di Docker Desktop, ini Early Access, jadi sangat memungkinkan ada bug maupun tidak stabil ya. Docker Scout ini juga sebenarnya sudah pernah rilis di CLI atau command, tetapi kali ini saatnya untuk di GUI atau grafis.
  • Nah, ada yang perlu diperhatikan, Docker Desktop tidak akan membungkus Compose v1 setelah Juni 2023. Kamu akan diberikan warning jika kamu masih menggunakannya.

Lebih lengkapnya akan lebih baik membaca catatan rilisnya.

Penambahan dukungan untuk Node dan Python pada Docker Init

Pada tulisan saya sebelumnya, saya sempat membahas tentang docker init ini dan dukungannya untuk Go. Sekarang adalah saatnya bagi teman-teman developer yang menggunakan Node maupun Python menggunakannya.

Dukungan Docker Init untuk Node

Oke, saya akan mencoba untuk simple web saja. Saya akan mencoba menggunakan FeathersJS. Kalau belum familiar, tidak apa-apa, boleh dicoba untuk eksplorasi di halaman webnya. Saya suka FeathersJS karena fitur-fitur yang membantu men-generate berkas-berkas yang saya perlukan terutama berkas yang berulang-ulang ditulis dan hanya mengubah sebagiannya saja.

Kita langsung aja generate aplikasi webnya. Simpel hanya menggunakan: npm create feathers@latest feathers-chat

Konfigurasi yang saya gunakan seperti ini:

Konfigurasi feathers-chat

Setelah selesai, direktori feathers-chat akan terbuat, jadi kita bisa langsung cd feathers-chat . Untungnya, setelah docker init , proyeknya bisa terdeteksi dengan baik.

docker init

Yang saya suka adalah docker init ini bisa mendeteksi package manager dan perintah yang bisa saya gunakan untuk menjalankan server. Namun, sayangnya saya tidak menemukan opsi untuk melakukan “build”, terutama untuk pengguna Typescript. Sehingga kita perlu menambahkannya sendiri.

Jadi saya perlu melakukan multi stage untuk melakukan build terlebih dahulu. Hasil akhir Dockerfile seperti ini

# syntax=docker/dockerfile:1

# Comments are provided throughout this file to help you get started.
# If you need more help, visit the Dockerfile reference guide at
# https://docs.docker.com/engine/reference/builder/

ARG NODE_VERSION=18.15.0

FROM node:${NODE_VERSION}-alpine as build
WORKDIR /usr/src/app
COPY . .
RUN yarn install --frozen-lockfile && yarn compile && yarn migrate

FROM node:${NODE_VERSION}-alpine

# Use production node environment by default.
ENV NODE_ENV production


WORKDIR /usr/src/app

# Download dependencies as a separate step to take advantage of Docker's caching.
# Leverage a cache mount to /root/.yarn to speed up subsequent builds.
# Leverage a bind mounts to package.json and yarn.lock to avoid having to copy them into
# into this layer.
RUN --mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=yarn.lock,target=yarn.lock \
--mount=type=cache,target=/root/.yarn \
yarn install --production --frozen-lockfile

# Run the application as a non-root user.
USER node

# Copy the rest of the source files into the image.
COPY . .

COPY --from=build /usr/src/app/lib/ /usr/src/app/lib/
COPY --from=build /usr/src/app/feathers-chat.sqlite /usr/src/app/feathers-chat.sqlite

# Expose the port that the application listens on.
EXPOSE 3030

# Run the application.
CMD yarn start

Menurut saya berkas docker-compose.yml sudah cukup baik, jadi kita coba jalankan yuk dengan perintah docker compose up -d . Dan akhirnya, API kita sudah berjalan di port 3030.

feathers

Dukungan Docker Init untuk Python

Oke, tadi kan Node sudah cukup bagus nih, apalagi bagi teman-teman yang suka menggunakan Node, sekarang saatnya Python. Saya akan mencoba menggunakan Flask. Langkah-langkah setting Flask bisa teman-teman cek di sini. Setelah itu teman-teman bisa melakukan pip freeze > requirements.txt . Minimal ada beberapa dependensi berikut:

blinker==1.6.2
click==8.1.3
colorama==0.4.6
Flask==2.3.2
itsdangerous==2.1.2
Jinja2==3.1.2
MarkupSafe==2.1.2
Werkzeug==2.3.3

Lalu kamu bisa membuat berkas hello.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
return "<p>Hello, World!</p>"

Pastikan konfigurasi saat menjalankan docker init sudah sesuai dengan aplikasi kamu ya. Ini konfigurasi saya.

konfigurasi python

Karena memang ini aplikasi yang simpel, jadinya tidak perlu menambahkan apapun. Bisa kita coba langsung docker compose up -d .

hello world python

Kesan untuk Docker Init

Menurut saya ini sudah cukup membantu terutama untuk mempersiapkan Dockerfile dan docker-compose.yml . Namun perlu dicatat bahwa kita akan tetap perlu melakukan modifikasi terhadap berkas tersebut jika ada dependensi, migrasi basis data, atau custom build yang diperlukan.

Docker Scout di Docker Desktop

Jadi ini fitur baru yang Early Access, teman-teman bisa lihat di bawah penampakannya.

Docker Scout

Kita bisa melihat Vulnerabilities dan packages yang ada dalam kontainer kita. Menurut saya ini fitur yang cukup keren terutama bagi teman-teman yang berkutat di keamanan atau Security. Jadi, cobain yuk.

Terakhir

Oke, tadi di awal saya sudah menyinggung mengenai Compose v1 yang tidak akan dibawa pada Docker Desktop setelah Juni 2023. Jadi teman-teman yang masih menggunakan Compose v1 disarankan untuk segera menggunakan Compose v2. Compose v1 ini biasanya saat teman-teman menggunakan docker-compose , sedangan v2 biasanya menggunakan docker compose . Untuk memastikan bahwa docker compose menggunakan versi 2, bisa menggunakan docker compose version .

compose version

Jadi kita udah membahas 3 topik nih, baik itu docker init yang sekarang menambah dukungan untuk Node dan Python, antar muka yang baru di Docker Desktop yaitu Docker Scout, maupun pengumuman mengenai pengakhiran dukungan Compose v1 di Docker Desktop.

Terima kasih banyak sudah membaca sampai akhir. Jika ada saran maupun umpan balik, boleh langsung komentar di sini. Have a nice day! Semoga harimu menyenangkan.

--

--

Bervianto Leo Pratama

Software Engineer | AWS Community Builder | HashiCorp Ambassador | Focus on Microservices and Cloud Computing