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.env2. Setup Build Parameters
ขั้นตอนต่อมาคือเปิด terminal ขึ้นมา แล้วไปที่ ClientApp
cd ClientAppจากนั้นให้กำหนด environment variable ที่ใช้ในการ build ซึ่งประกอบด้วย
| Variable | Description |
|---|---|
NPM_TOKEN | npm token ของ atlasx npm registry |
BASE_HREF | base href ของ website (Optional) |
Note
⚠️ หากมีการใช้งาน Traefik Proxy จะต้องกำหนด
BASE_HREFด้วย
ซึ่ง npm token นั้นสามารถหาได้จากไฟล์ .npmrc
MacOS/Linux
cat $HOME/.npmrc | grep _authTokenWindows
type %USERPROFILE%\.npmrc | findstr _authTokenหลักจากนั้นให้กำหนดพารามิเตอร์โดยใช้คำสั่ง
MacOS/Linux
export NPM_TOKEN=NpmToken.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export BASE_HREF="/axwa/" # กำหนด base href ของ websiteWindows
$env:NPM_TOKEN=NpmToken.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
$env:BASE_HREF="/axwa/" # กำหนด base href ของ website3. 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 164MBBuild 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.template2. Setup Build Parameters
ขั้นตอนต่อมาคือเปิด terminal ขึ้นมา แล้วไปที่ root จากนั้นให้กำหนด environment variable ที่ใช้ในการ build ซึ่งประกอบด้วย
| Variable | Description |
|---|---|
NUGET_TELERIK_USER | Username ของ telerik สามารถขอได้จากทีม AtlasX |
NUGET_TELERIK_PASSWORD | Password ของ telerik สามารถขอได้จากทีม AtlasX |
NUGET_ATLASX_USER | Username ของ CDG Account |
NUGET_ATLASX_PASSWORD | Password ของ 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