Build Image

Build Container Image

เป็นการ build application ให้อยู่ในรูปแบบของ container image ซึ่งเมื่อเราได้เป็น image แล้ว เราสามารถที่จะพกพา image นี้ไป run ที่เครื่องไหนก็ได้

Container Image Components

Container image นั้นประกอบไปด้วย 2 ส่วนที่เราจะต้องกำหนดคือ ชื่อของ image และแท็กของ image ซึ่งจะเขียนในรูปแบบ <IMAGE_NAME>:<TAG> ตัวอย่างเช่น atlasx-webapp:1.0.0

ในการ build image นั้นเราสามารถที่จะใช้ชื่อซ้ำกันได้ และสามารถระบุรุ่นได้ตามต้องการ ตัวอย่างเช่น atlasx-webapp:1.0.0 หรือ atlasx-webapp:latest เป็นต้น

Build AtlasX Web Application Image

Note

ในกระบวนการนี้จะเป็นการ build image เฉพาะที่เป็น Angular มารันด้วย web server ที่ชื่อ NGINX เท่านั้น

1. Prepare Dockerfile

ในการ build AtlasX Web Application สิ่งที่เราต้องเตรียมคือ ตรวจสอบว่าโปรเจ็กต์มีไฟล์สำหรับ containerize แล้วหรือยัง ถ้ายังไม่มีให้ดาวน์โหลด docker pack มาไว้ที่โฟล์เดอร์ ClientApp ตามโครงสร้างดังนี้

.
├── ClientApp/
│   ├── docker/
│   │   └── Dockerfile
│   ├── nginx/
│   │   └── nginx.conf
│   ├── .dockerignore
│   └── .npmrc.docker
├── .gitignore
├── docker-compose.yml
└── example.env

2. Setup Build Parameters

ขั้นตอนต่อมาคือเปิด terminal ขึ้นมา แล้วไปที่ ClientApp

cd ClientApp

จากนั้นให้กำหนด environment variable ที่ใช้ในการ build ซึ่งประกอบด้วย

VariableDescription
NPM_TOKENnpm token ของ atlasx npm registry
BASE_HREFbase href ของ website (Optional)
Note

⚠️ หากมีการใช้งาน Traefik Proxy จะต้องกำหนด BASE_HREF ด้วย

ซึ่ง npm token นั้นสามารถหาได้จากไฟล์ .npmrc

MacOS/Linux

cat $HOME/.npmrc | grep _authToken

Windows

type %USERPROFILE%\.npmrc | findstr _authToken

หลักจากนั้นให้กำหนดพารามิเตอร์โดยใช้คำสั่ง

MacOS/Linux

export NPM_TOKEN=NpmToken.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export BASE_HREF="/axwa/" # กำหนด base href ของ website

Windows

$env:NPM_TOKEN=NpmToken.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
$env:BASE_HREF="/axwa/" # กำหนด base href ของ website

3. Building Image

ในการ build image นั้นให้ใช้คำสั่ง

MacOS/Linux

docker build -f docker/Dockerfile \
    --build-arg NPM_TOKEN=${NPM_TOKEN} \
    --build-arg BASE_HREF=${BASE_HREF} \
    -t <IMAGE_NAME>:<TAG> .

Windows

docker build -f docker/Dockerfile `
    --build-arg NPM_TOKEN=${env:NPM_TOKEN} `
    --build-arg BASE_HREF=${env:BASE_HREF} `
    -t <IMAGE_NAME>:<TAG> .

ตัวอย่างเช่น

docker build -f docker/Dockerfile \
    --build-arg NPM_TOKEN=${NPM_TOKEN} \
    --build-arg BASE_HREF=${BASE_HREF} \
    -t atlasx-webapp:1.0.0 .

เมื่อ build เสร็จแล้ว สามารถตรวจสอบว่า image ที่สร้างขึ้นมีอยู่หรือไม่ โดยใช้คำสั่ง

docker images

จะแสดงรายการของ image ที่สร้างขึ้น

REPOSITORY        TAG       IMAGE ID        CREATED        SIZE
atlasx-webapp     1.0.0     41cb0ddb9a83    9 hours ago    164MB

Build AtlasX Web Service Image

1. Prepare Dockerfile

ในการ build AtlasX Web Application สิ่งที่เราต้องเตรียมคือ ตรวจสอบว่าโปรเจ็กต์มีไฟล์สำหรับ containerize แล้วหรือยัง ถ้ายังไม่มีให้ดาวน์โหลด docker pack มาไว้ที่โฟล์เดอร์ root ของโปรเจ็กต์ ตามโครงสร้างดังนี้

.
├── .dockerignore
├── .gitignore
├── Dockerfile
├── docker-compose.yml
├── example.env
└── nuget.config.template

2. Setup Build Parameters

ขั้นตอนต่อมาคือเปิด terminal ขึ้นมา แล้วไปที่ root จากนั้นให้กำหนด environment variable ที่ใช้ในการ build ซึ่งประกอบด้วย

VariableDescription
NUGET_TELERIK_USERUsername ของ telerik สามารถขอได้จากทีม AtlasX
NUGET_TELERIK_PASSWORDPassword ของ telerik สามารถขอได้จากทีม AtlasX
NUGET_ATLASX_USERUsername ของ CDG Account
NUGET_ATLASX_PASSWORDPassword ของ CDG Account

หลักจากนั้นให้กำหนดพารามิเตอร์โดยใช้คำสั่ง

MacOS/Linux

export NUGET_TELERIK_USER=<NUGET_TELERIK_USER>
export NUGET_TELERIK_PASSWORD=<NUGET_TELERIK_PASSWORD>
export NUGET_ATLASX_USER=<NUGET_ATLASX_USER>
export NUGET_ATLASX_PASSWORD=<NUGET_ATLASX_PASSWORD>

Windows

$env:NUGET_TELERIK_USER=<NUGET_TELERIK_USER>
$env:NUGET_TELERIK_PASSWORD=<NUGET_TELERIK_PASSWORD>
$env:NUGET_ATLASX_USER=<NUGET_ATLASX_USER>
$env:NUGET_ATLASX_PASSWORD=<NUGET_ATLASX_PASSWORD>

3. Building Image

ในการ build image นั้นให้ใช้คำสั่ง

MacOS/Linux

docker build --build-arg NUGET_TELERIK_USER=${NUGET_TELERIK_USER} \
    --build-arg NUGET_TELERIK_PASSWORD=${NUGET_TELERIK_PASSWORD} \
    --build-arg NUGET_ATLASX_USER=${NUGET_ATLASX_USER} \
    --build-arg NUGET_ATLASX_PASSWORD=${NUGET_ATLASX_PASSWORD} \
    -t <IMAGE_NAME>:<TAG> .

Windows

docker build --build-arg NUGET_TELERIK_USER=${env:NUGET_TELERIK_USER} `
    --build-arg NUGET_TELERIK_PASSWORD=${env:NUGET_TELERIK_PASSWORD} `
    --build-arg NUGET_ATLASX_USER=${env:NUGET_ATLASX_USER} `
    --build-arg NUGET_ATLASX_PASSWORD=${env:NUGET_ATLASX_PASSWORD} `
    -t <IMAGE_NAME>:<TAG> .

ตัวอย่างเช่น

docker build --build-arg NUGET_TELERIK_USER=${NUGET_TELERIK_USER} \
    --build-arg NUGET_TELERIK_PASSWORD=${NUGET_TELERIK_PASSWORD} \
    --build-arg NUGET_ATLASX_USER=${NUGET_ATLASX_USER} \
    --build-arg NUGET_ATLASX_PASSWORD=${NUGET_ATLASX_PASSWORD} \
    -t atlasx-webservice:1.0.0 .

เมื่อ build เสร็จแล้ว สามารถตรวจสอบว่า image ที่สร้างขึ้นมีอยู่หรือไม่ โดยใช้คำสั่ง

docker images

จะแสดงรายการของ image ที่สร้างขึ้น

REPOSITORY        TAG       IMAGE ID        CREATED        SIZE
atlasx-webservice    1.0.0     dcb07d9f4944    13 hours ago   63.6MB