Tìm kiếm Blog này

Translate

Thứ Năm, 5 tháng 11, 2020

Build và Publish Docker image lên Docker Hub

Xin chào các bạn.

Hôm nay chúng ta sẽ cùng nhau xây dựng và đóng gói application thành Docker image để triển khai

sản phẩm trên môi trường container nhé. 
Trong phạm vi bài viết này, chúng ta sẽ xây dựng một json api đơn giản với Express.JS.

SOURCE CODE: https://bitbucket.org/doanmanhsonha/user-api/src/master/

User Api

Đầu tiên, chúng ta tạo folder user-api để chứa source code

$ mkdir user-api

$ cd user-api

Chạy lệnh npm init để tạo file package.json

$ npm init -y

Cài đặt gói Express và các gói phụ trợ khác.

$ npm install express --save

Mở file index.js,dán nội dung bên dưới và lưu lại.

const express = require('express')

const app = express()

const port = 3000

 

app.get('/', (req, res) => {

  res.json({

    name: 'Bob',

    email: 'bob@gmail.com'

  })

})

 

app.listen(port, () => {

  console.log(`Example app listening at http://localhost:${port}`)

})

Đến đây chúng ta vừa hoàn thành một JSON api rất đơn giản chạy trên Node.Js.

Để kiểm tra kết quả, chúng ta chạy lệnh sau:

$ node index.js

Example app listening at http://localhost:3000

Copy đường link http://localhost:3000 vào trình duyệt, kết quả như sau:

Docker Image

Tạo file Dockerfile trong folder /user-api, copy nội dung bên dưới rồi lưu lại.

# Bản image gốc làm nền 

FROM node:10.16.2-alpine

 

# Chỉ định folder trong Docker image sắp được tạo, từ đây tất cả

hoạt động sẽ được thực hiện trong folder này.

# Chú ý: đây không phải folder trên máy tính của chúng ta.

# Folder sẽ được tạo tự động trong quá trình build.

WORKDIR /app

 

# Copy file package.json package-lock.json

COPY package*.json ./

 

# Cài đặt npm package cần thiết

RUN npm install

 

# Copy source code từ /user-api trên máy tính vào /app trong Docker

image

COPY . .

 

# Chỉ định port mà container sẽ lắng nghe request

EXPOSE 3000

 

# Lệnh chạy application trong container

CMD node index.js

 

Chạy thử container

$ docker run --name user-api -d -p 3000:3000 user-api

a8eaf2beffeb8f17691c336d026332d2c42c85080496923e6c8f9eb0ab95566b

Copy đường link http://localhost:3000 vào trình duyệt, kết quả như sau:

Như vậy là chúng ta đã xây dựng thành công JSON api bằng Express.JS và tạo Docker image.


Tiếp theo, chúng ta sẽ publish Docker image lên Docker hub.

Docker Hub

Đăng nhập vào Docker Hub, và tạo một repo mới tên là user-api, sau đó chạy lệnh sau,

thay [Docker Hub Id] bằng Id của bạn.


$ docker tag user-api:latest [Docker Hub Id]/user-api:latest

$ docker push [Docker Hub Id]/user-api:latest

The push refers to repository [docker.io/[Docker Hub Id]/user-api]

e7283b89a29d: Layer already exists

ed89a174dcdf: Layer already exists

e3b477d4e4fb: Layer already exists

6b7d4be13c70: Layer already exists

f20399152e43: Layer already exists

d11caf9b262d: Layer already exists

81313ebc0290: Layer already exists

f1b5933fe4b5: Layer already exists

latest: digest: sha256:cf95cc131bfb8c2cb77e21e4ba6f08fbf3111192fc21d7d29d0d2eb

822ee05e3 size: 1994

 


Kiểm tra trên https://hub.docker.com, chúng ta thấy image được đưa lên thành công tượng tự như sau

CHÚC CÁC BẠN THÀNH CÔNG!

1 nhận xét:

  1. Merkur Review 2021 | Is the Merkur - SCASINO.COM
    The Merkur Review 2021 is a perfect leovegas introduction to Merkur's range of safety razors and can be considered a great introduction to the world of 메리트카지노 high  Rating: 3.6 코인카지노 · ‎Review by Sean Love

    Trả lờiXóa

Bài đăng phổ biến