Excercise 3 Built a new image
reference: [มาสร้าง Docker Image กันเถอะ!, multistage-build,docker-maven]
1. Clone node.js code จาก github
git clone https://github.com/jitech-th/container-training.jitech.co.th.git container-lab
cd container-lab/exercise-3
2. สร้าง Dockerfile
***note
Dockerfile เป็น Script หรือ Configuration ที่ใช้สำหรับสร้าง Image ใหม่ขึ้นมา
ภายใน Dockerfile มีส่วนประกอบด้วย
1. Base Image (ฐาน image ที่จะเอามาสร้าง Image ต่อ)
2. Command (คำสั่งเพื่อแก้ไขดัดแปลง Image เดิม โดย Docker จะสร้างเป็น Image Layer ใหม่ทุกบันทัดของคำสั่งจะ )
* COPY <src> <dest>
* ADD <src> <dest>
* RUN <command>
* WORKDIR
* USER
* EXPOSE (กำหนด port ที่ต้องการให้เข้าถึงได้จากภายนอก)
* etc.
3. ENTRYPOINT หรือ CMD (เป็นการกำหนดจุดเริ่มทำงานของ container เมื่อ Run Image)
สร้าง Dockerfile ด้วยคำสั่ง vim Dockerfile
และคัดลอก Config ต่อไปนี้ลงไป
FROM node:10-alpine
ADD ./hello-world /hello-world
RUN chown -R node:node /hello-world
WORKDIR /hello-world
USER node
RUN cd /hello-world; npm install
EXPOSE 3030
CMD [ "node", "app.js" ]
3. Built Docker
docker build -t hello-world .
4. Create container from image
docker run -d -p 3030:3030 hello-world
5. สร้าง Tag เพื่อเตรียม Push ขึ้น Docker Registry
สร้าง Tag เพื่อใช้ำสำหรับ push ขึ้นบน https://hub.docker.com/
docker tag hello-world pt1988/hello-world:1.0
docker tag hello-world pt1988/hello-world
6. Push Image ขึ้น Registry (Dockerhub.io)
login account ของ Dockerhub ด้วยคำสั่ง
docker login
push image ขึ้น Registry ด้วยคำสั่ง
docker push pt1988/hello-world:1.0
docker push pt1988/hello-world