Skip to content

Dockerfile Instructions - Part 1 📝 ​

Dockerfile-āĻāϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϞāĻžāχāύ āχāĻŽā§‡āĻœā§‡āϰ āĻāĻ• āĻāĻ•āϟāĻŋ āϞ⧇āϝāĻŧāĻžāϰ (Layer) āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āĻāχ āĻ—āĻžāχāĻĄā§‡ āφāĻŽāϰāĻž āĻŦ⧇āĻļ āĻ•āĻŋāϛ⧁ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āχāĻ¨ā§āϏāĻŸā§āϰāĻžāĻ•āĻļāύ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞ⧋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϏāĻ āĻŋāĻ• āύāĻŋ⧟āĻŽ āύāĻŋā§Ÿā§‡ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻŦā§‹āĨ¤


ā§§. FROM (āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāύ) ​

āĻĒā§āϰāϤāĻŋāϟāĻŋ Dockerfile āĻ…āĻŦāĻļā§āϝāχ FROM āĻĻāĻŋā§Ÿā§‡ āĻļ⧁āϰ⧁ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āφāĻĒāύāĻžāϰ āχāĻŽā§‡āĻœā§‡āϰ Base Image āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

dockerfile
FROM ubuntu:20.04

āĻŦ⧇āĻ¸ā§āϟ āĻĒā§āĻ°ā§āϝāĻžāĻ•āϟāĻŋāϏ: āϏāĻŦāϏāĻŽā§Ÿ āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ­āĻžāĻ°ā§āϏāύ (Tag) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ latest āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻŦāĻŋāĻ˛ā§āĻĄā§‡ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤


⧍. LABEL (āĻŽā§‡āϟāĻžāĻĄā§‡āϟāĻž) ​

āχāĻŽā§‡āĻœā§‡ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϤāĻĨā§āϝ (āϝ⧇āĻŽāύ: āϞ⧇āĻ–āĻ•, āĻ­āĻžāĻ°ā§āϏāύ, āĻĄā§‡āϏāĻ•ā§āϰāĻŋāĻĒāĻļāύ) āϝ⧋āĻ— āĻ•āϰāϤ⧇ LABEL āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤

dockerfile
LABEL maintainer="ripon@example.com"
LABEL version="1.0"
LABEL description="My Awesome Nginx Server"

ā§Š. RUN (āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϚāĻžāϞāĻžāύ⧋) ​

āχāĻŽā§‡āϜ āĻŦāĻŋāĻ˛ā§āĻĄ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇āϰ āϭ⧇āϤāϰ⧇ āϕ⧋āύ⧋ āϏāĻĢāϟāĻ“ā§Ÿā§āϝāĻžāϰ āχāĻ¨ā§āϏāϟāϞ āĻŦāĻž āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ RUN āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšā§ŸāĨ¤

  • āϭ⧁āϞ āĻĒāĻĻā§āϧāϤāĻŋ (āĻŦ⧇āĻļāĻŋ āϞ⧇āϝāĻŧāĻžāϰ):
    dockerfile
    RUN apt-get update
    RUN apt-get install -y nginx
  • āϏāĻ āĻŋāĻ• āĻĒāĻĻā§āϧāϤāĻŋ (āĻ•āĻŽ āϞ⧇āϝāĻŧāĻžāϰ):
    dockerfile
    RUN apt-get update && apt-get install -y \
        nginx \
        curl \
        vim && \
        rm -rf /var/lib/apt/lists/*

    > `&&` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻāĻ• āϞāĻžāχāύ⧇ āϞāĻŋāĻ–āϞ⧇ āϞ⧇āϝāĻŧāĻžāϰ āϏāĻ‚āĻ–ā§āϝāĻž āĻ•āĻŽā§‡ āĻāĻŦāĻ‚ āχāĻŽā§‡āϜ āϏāĻžāχāϜ āϛ⧋āϟ āĻĨāĻžāϕ⧇āĨ¤


ā§Ē. WORKDIR (āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϏ⧇āϟ āĻ•āϰāĻž) ​

āĻāϟāĻŋ Linux-āĻāϰ cd āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡āϰ āĻŽāϤ⧋ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āϏ⧇āϟ āĻ•āϰāϞ⧇ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϏāĻŦ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ (RUN, COPY, CMD) āĻ“āχ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻšāĻŦ⧇āĨ¤

dockerfile
WORKDIR /app

(āϝāĻĻāĻŋ āĻĢā§‹āĻ˛ā§āĻĄāĻžāϰāϟāĻŋ āύāĻž āĻĨāĻžāϕ⧇, āĻĄāĻ•āĻžāϰ āϏ⧇āϟāĻŋ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ• āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āύ⧇āĻŦ⧇)āĨ¤


ā§Ģ. COPY vs ADD ​

āωāϭ⧟āχ āĻĢāĻžāχāϞ āĻ•āĻĒāĻŋ āĻ•āϰāĻžāϰ āĻ•āĻžāϜ āĻ•āϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāĻĻ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ•āĻŋāϛ⧁ āĻĒāĻžāĻ°ā§āĻĨāĻ•ā§āϝ āφāϛ⧇:

  • COPY: āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϞ⧋āĻ•āĻžāϞ āĻŽā§‡āĻļāĻŋāύ āĻĨ⧇āϕ⧇ āĻĢāĻžāχāϞ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ⧇ āĻ•āĻĒāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ (āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āύāĻŋāϰāĻžāĻĒāĻĻ āĻ“ āϰ⧇āĻ•āĻŽā§‡āĻ¨ā§āĻĄā§‡āĻĄ)āĨ¤
    dockerfile
    COPY . /app
  • ADD: āĻāϟāĻŋ āĻāĻ•āϟ⧁ āĻŦ⧇āĻļāĻŋ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀āĨ¤ āĻāϟāĻŋ āϕ⧋āύ⧋ URL āĻĨ⧇āϕ⧇ āĻĢāĻžāχāϞ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻ…āĻĨāĻŦāĻž āϕ⧋āύ⧋ āϜāĻŋāĻĒ āĻĢāĻžāχāϞ (.tar.gz) āĻ•āĻĒāĻŋ āĻ•āϰāϞ⧇ āϏ⧇āϟāĻŋ āĻ…āĻŸā§‹āĻŽā§‡āϟāĻŋāĻ• āφāύāϜāĻŋāĻĒ (Extract) āĻ•āϰ⧇ āĻĢ⧇āϞ⧇āĨ¤
    dockerfile
    ADD my_files.tar.gz /app

ā§Ŧ. āωāĻĻāĻžāĻšāϰāĻŖ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ (Dockerfile) ​

dockerfile
# ā§§. āĻŦ⧇āϏ āχāĻŽā§‡āϜ
FROM ubuntu:20.04

# ⧍. āĻŽā§‡āϟāĻžāĻĄā§‡āϟāĻž
LABEL maintainer="dev-team"

# ā§Š. āφāĻĒāĻĄā§‡āϟ āĻ“ āĻ…ā§āϝāĻžāĻĒ āχāĻ¨ā§āϏāϟāϞ
RUN apt-get update && apt-get install -y nginx

# ā§Ē. āĻ•āĻžāĻœā§‡āϰ āϜāĻžā§ŸāĻ—āĻž āĻ āĻŋāĻ• āĻ•āϰāĻž
WORKDIR /var/www/html

# ā§Ģ. āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āĻ•āĻĒāĻŋ āĻ•āϰāĻž
COPY index.html .

# ā§Ŧ. āĻĒā§‹āĻ°ā§āϟ
EXPOSE 80

# ā§­. āĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ
CMD ["nginx", "-g", "daemon off;"]

> `RUN` āĻ•āĻŽāĻžāĻ¨ā§āĻĄā§‡ āϏāĻŦāϏāĻŽā§Ÿ āĻŸā§‡āĻŽā§āĻĒā§‹āϰāĻžāϰāĻŋ āĻĢāĻžāχāϞ āĻŦāĻž āĻ•ā§āϝāĻžāĻļ āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰ⧇ āĻĻ⧇āĻŦ⧇āύ āϝāĻžāϤ⧇ āχāĻŽā§‡āĻœā§‡āϰ āϏāĻžāχāϜ āĻ…āϝāĻĨāĻžāχ āĻŦ⧜ āύāĻž āĻšā§ŸāĨ¤

Released under the MIT License.