Environment Variables in Docker
การใช้ Environment Variables ใน Docker
Environment Variables คือค่าที่สามารถตั้งค่าและนำไปใช้ใน container หรือ application โดยทั่วไปแล้วจะใช้ในการตั้งค่าพารามิเตอร์ต่างๆ ที่สามารถปรับเปลี่ยนได้โดยไม่ต้องแก้ไขโค้ดของโปรแกรมโดยตรง การใช้ Environment Variables ช่วยให้สามารถจัดการและคอนฟิกค่าเหล่านี้ได้ง่ายขึ้น โดยเฉพาะในสภาพแวดล้อมที่ต้องการความยืดหยุ่น เช่น การตั้งค่าผ่านการรัน container ใน Docker
วิธีการตั้งค่า Environment Variables
Docker ให้ความสามารถในการตั้งค่า Environment Variables เมื่อรัน container ด้วยคำสั่ง -e หรือ --env
Syntax:
docker run -e <VARIABLE_NAME>=<value> <image_name>
ตัวอย่าง:
docker run -e MY_APP_ENV=production my-app
ในตัวอย่างนี้:
MY_APP_ENVเป็นตัวแปรสภาพแวดล้อม (environment variable)productionคือค่าของตัวแปรmy-appคือ Docker image ที่จะรัน
การใช้หลายๆ Environment Variables
คุณสามารถตั้งค่าได้หลายตัวแปรพร้อมกันโดยใช้คำสั่ง -e หลายครั้ง:
docker run -e MY_APP_ENV=production -e DATABASE_URL=mongodb://localhost:27017 my-app
การใช้ไฟล์ .env สำหรับ Environment Variables
หากคุณมีหลายตัวแปรที่ต้องการตั้งค่า, การใช้ไฟล์ .env อาจทำให้การตั้งค่ารวดเร็วและจัดการได้ง่ายขึ้น โดยไฟล์ .env จะประกอบด้วยตัวแปรต่างๆ ในรูปแบบ KEY=VALUE
ตัวอย่างไฟล์ .env:
MY_APP_ENV=production
DATABASE_URL=mongodb://localhost:27017
SECRET_KEY=my-secret-key
จากนั้น, คุณสามารถใช้คำสั่ง --env-file เพื่อนำไฟล์นี้มาใช้ในการรัน container:
docker run --env-file .env my-app
การใช้ Environment Variables ภายใน Dockerfile
คุณสามารถใช้ Environment Variables ภายใน Dockerfile โดยใช้คำสั่ง ENV. คำสั่งนี้จะตั้งค่าตัวแปรภายใน container และสามารถใช้ในการกำหนดค่าต่างๆ ที่จะถูกใช้ในระหว่างการสร้าง container หรือเมื่อ container รัน
ตัวอย่างการใช้ ENV ใน Dockerfile:
FROM node:14
# ตั้งค่าตัวแปรสภาพแวดล้อม
ENV NODE_ENV=production
ENV PORT=3000
# ติดตั้ง dependencies และรันแอปพลิเคชัน
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
ในที่นี้:
- ตัวแปร
NODE_ENVถูกตั้งค่าเป็นproduction - ตัวแปร
PORTถูกตั้งค่าเป็น3000
เมื่อ container ถูกรัน, ตัวแปรเหล่านี้จะสามารถใช้ได้ภายใน container
การเรียกใช้ Environment Variables ในภาษาต่างๆ
หลังจากที่ได้ตั้งค่า Environment Variables แล้ว คุณสามารถเรียกใช้ตัวแปรเหล่านี้ในแอปพลิเคชันของคุณได้ โดยขึ้นอยู่กับภาษาการพัฒนาและเทคโนโลยีที่ใช้งาน
ตัวอย่างใน Node.js:
const environment = process.env.NODE_ENV;
const port = process.env.PORT || 3000;
console.log(`App is running in ${environment} mode on port ${port}`);
ตัวอย่างใน Python:
import os
environment = os.getenv('NODE_ENV')
port = os.getenv('PORT', 3000)
print(f"App is running in {environment} mode on port {port}")
ตัวอย่างใน Bash:
echo "App is running in $NODE_ENV mode on port $PORT"
ข้อดีของการใช้ Environment Variables
- ความยืดหยุ่น: คุณสามารถปรับเปลี่ยนค่าของ environment variables ได้โดยไม่ต้องแก้ไขโค้ดของแอปพลิเคชัน
- ความปลอดภัย: สามารถใช้ environment variables ในการเก็บข้อมูลที่สำคัญเช่น API keys, passwords, หรือ tokens แทนการเก็บในโค้ด
- การจัดการง่าย: การใช้ไฟล์
.envช่วยให้การตั้งค่าตัวแปรต่างๆ ง่ายและสะดวกในการจัดการ
การตรวจสอบ Environment Variables
หากคุณต้องการตรวจสอบค่าของ environment variables ที่ถูกตั้งค่าใน container ที่กำลังรันอยู่, คุณสามารถใช้คำสั่ง docker exec เพื่อลงใน container และใช้คำสั่ง env หรือ printenv
docker exec -it <container_id> env
การแสดงผลจะเป็นค่าต่างๆ ที่ถูกตั้งไว้ใน container เช่น:
MY_APP_ENV=production
DATABASE_URL=mongodb://localhost:27017
SECRET_KEY=my-secret-key
สรุป
การใช้ Environment Variables ใน Docker ช่วยให้การตั้งค่าระบบและแอปพลิเคชันใน container เป็นไปได้ง่ายและยืดหยุ่นมากขึ้น คุณสามารถตั้งค่า environment variables ทั้งในขณะรัน container โดยใช้คำสั่ง -e, ใน Dockerfile ด้วยคำสั่ง ENV, หรือใช้ไฟล์ .env เพื่อจัดการค่าต่างๆ ในการรัน Docker container ได้อย่างสะดวก การใช้ environment variables ยังช่วยเพิ่มความปลอดภัยในการจัดการข้อมูลสำคัญและสามารถทำให้แอปพลิเคชันทำงานได้ในหลายๆ สภาพแวดล้อม