my file learn about tech container (docker, podman, kubernetes)

http://ariaf.my.id/container_aria/docker compose/15 - docker file.html


docker file

  • docker file => membuat container dari docker file yang kita buat
    • hal ini mempermudahkan kita sehingga tidak membuat image nya terlebih dahulu secara manual
  • build
    • ketika kita ingin membuat container dari dockerfile kita tidak menggunakan attribute image lagi di service nya
    • kita harus menggunakan attribute build, dimana terdapat attribute
      • context: berisi path ke file dockerfile
      • dockerfile: nama file dockerfile, bisa diganti jika mau
      • args: argument yang dibutuhkan ketika melakukan docker build
  • image name
    • secara default docker compose akan membuat image dengan nama random ketika melakukan build dockerfile
    • jika kita ingin menentukan namanya kita bisa tambahkan attribute image pada servicenya
      • secara otomatis docker compose akan membuat image dengan nama sesuai dengan itu

syntax

services:
  app:
    container_name: app
    build:
      context: ./app
      dockerfile: dockerfile
    image: "app-golang:1.0.0" # nama image 
    environment:
      - "APP_PORT=9000"
    ports:
      - "9000:9000"

# context => lokasi folder path berisi dockerfile
# dockerfil => nama dockerfile
# image => nama image hasil build
# args => argument untuk environment docker file
  • build dockerfile
    • ketika kita menggunakan perintah docker compose start
    • secara otomatis docker compose akan malkukan build terlebih dahulu jika imagenya belum dibuat
    • tapi jika kita hanya ingin melakukan build image saja, tanpa membuat container, kita juga bisa menggunakan perintah docker compose build
      docker compose build
      
  • menghapus image
    • hasil image dari docker compose tidak akan dihapus ketika melkaukan perintah docker compose down
    • jadi untuk menghapus kita harus hapus manual menggunakan perintah docker image rm nama-image:tag
      docker image rm nama_image
      
  • build ulang => ketika kita mengubah kode progam
    • lalu kita coba stop dan start ulang container menggunakan docker compose,
      • bukan berarti code progam terbaru akan berjalan
    • hal ini karena image versi baru otomatis terbuat,
      • sehingga jika kita ingin menggunakan docker image versi baru
      • kita harus hapus dulu containernya, lalu buat ulang dengan image baru