GoDasturchi
Building Docker Images

Building Docker Images

Docker image'larini qurish

Tayyor image'larni yuklab ishlatish yaxshi, lekin sizning o'z Go dasturingiz uchun ham image kerak bo'ladi. Buni qurish — tort pishirish retseptini yozishga o'xshaydi: siz "qanday qadamlar bilan tortni tayyorlash kerak"ligini ketma-ket yozib chiqasiz, keyin bu retsept asosida istalgancha tort pishirish mumkin bo'ladi.

Bu "retsept" Docker'da Dockerfile deb ataladi — oddiy matn fayli, unda image qanday qurilishi kerakligi ketma-ket buyruqlar bilan yozilgan. docker build buyrug'i shu Dockerfile'ni o'qib, undan haqiqiy image yaratadi.

Dockerfile
FROM golang:1.22

WORKDIR /app
COPY . .
RUN go build -o server .

CMD ["./server"]

Har bir qator — bitta "qadam": FROM golang:1.22 — "Go 1.22 allaqachon o'rnatilgan tayyor image'dan boshla" (bu — retseptdagi "tayyor xamirdan foydalaning" kabi, noldan hammasini o'zingiz qurmaysiz). WORKDIR /app — "ichkarida /app papkasida ishla" (terminal'da cd /app qilgandek). COPY . . — joriy papkadagi barcha fayllarni image ichiga nusxalaydi. RUN go build ... — image qurilish vaqtida shu buyruqni bajaradi (dasturni kompilyatsiya qiladi). CMD [...] — konteyner ishga tushganda bajariladigan buyruq (kompilyatsiya vaqtida emas, balki docker run chaqirilganda).

terminal
$ docker build -t mening-serverim .
$ docker run mening-serverim

docker build -t mening-serverim . — joriy papkadagi (.) Dockerfile'dan mening-serverim nomli image quradi. -t — "tag", ya'ni image'ga tushunarli nom berish (aks holda uzun, tasodifiy ID bilan ishlashga to'g'ri kelardi). Qurilgach, uni docker run mening-serverim bilan xuddi hello-worldni ishga tushirgandek ishga tushirish mumkin.

Key Takeaway

Key Takeaway:

Dockerfile — image qanday qurilishini bosqichma-bosqich tasvirlaydigan "retsept"; docker build shu retseptdan haqiqiy, qayta ishlatiladigan image yaratadi.

NEXT UP

Image Tags & Management

Building Docker Images

Docker image'larini qurish

Tayyor image'larni yuklab ishlatish yaxshi, lekin sizning o'z Go dasturingiz uchun ham image kerak bo'ladi. Buni qurish — tort pishirish retseptini yozishga o'xshaydi: siz "qanday qadamlar bilan tortni tayyorlash kerak"ligini ketma-ket yozib chiqasiz, keyin bu retsept asosida istalgancha tort pishirish mumkin bo'ladi.

Bu "retsept" Docker'da Dockerfile deb ataladi — oddiy matn fayli, unda image qanday qurilishi kerakligi ketma-ket buyruqlar bilan yozilgan. docker build buyrug'i shu Dockerfile'ni o'qib, undan haqiqiy image yaratadi.

Dockerfile
FROM golang:1.22

WORKDIR /app
COPY . .
RUN go build -o server .

CMD ["./server"]

Har bir qator — bitta "qadam": FROM golang:1.22 — "Go 1.22 allaqachon o'rnatilgan tayyor image'dan boshla" (bu — retseptdagi "tayyor xamirdan foydalaning" kabi, noldan hammasini o'zingiz qurmaysiz). WORKDIR /app — "ichkarida /app papkasida ishla" (terminal'da cd /app qilgandek). COPY . . — joriy papkadagi barcha fayllarni image ichiga nusxalaydi. RUN go build ... — image qurilish vaqtida shu buyruqni bajaradi (dasturni kompilyatsiya qiladi). CMD [...] — konteyner ishga tushganda bajariladigan buyruq (kompilyatsiya vaqtida emas, balki docker run chaqirilganda).

terminal
$ docker build -t mening-serverim .
$ docker run mening-serverim

docker build -t mening-serverim . — joriy papkadagi (.) Dockerfile'dan mening-serverim nomli image quradi. -t — "tag", ya'ni image'ga tushunarli nom berish (aks holda uzun, tasodifiy ID bilan ishlashga to'g'ri kelardi). Qurilgach, uni docker run mening-serverim bilan xuddi hello-worldni ishga tushirgandek ishga tushirish mumkin.

Key Takeaway

Key Takeaway:

Dockerfile — image qanday qurilishini bosqichma-bosqich tasvirlaydigan "retsept"; docker build shu retseptdan haqiqiy, qayta ishlatiladigan image yaratadi.

NEXT UP

Image Tags & Management