การสร้าง Docker container เพื่อ run oracle เป็นวิธีที่ยอดเยี่ยมสำหรับนักพัฒนา เพราะช่วยให้เราติดตั้งฐานข้อมูลขนาดใหญ่ได้ภายในไม่กี่นาที โดยไม่ต้องลงโปรแกรมหนักเครื่องแบบสมัยก่อน
- สร้าง folder เก็บข้อมูลก่อน โดยคำสั่ง
mkdir -p /Users/Shared/Portable/docker/oracle - ไปที่ folder
cd /Users/Shared/Portable/docker/oracle - สร้างไฟล์
touch docker-compose.yml - ใส่เนื้อหา
services: oracle: container_name: docker-oracle environment: - ORACLE_PASSWORD=SAj44GMbSLM8 # Use the same password style you like - APP_USER=Rwmm92CEWJn3 - APP_USER_PASSWORD=raAEWgr9VWEV image: gvenzl/oracle-free:latest platform: linux/amd64 ports: - "1521:1521" restart: unless-stopped volumes: - ./data:/opt/oracle/oradata- container_name เช่น docker-oracle
- ORACLE_PASSWORD เช่น SAj44GMbSLM8
- APP_USER เช่น Rwmm92CEWJn3
- APP_USER_PASSWORD เช่น raAEWgr9VWEV
- ports เช่น 1521
- ติดตั้งและรัน
docker compose up -d
ทดสอบ
ดู log
หลังจากสั่ง Run แล้ว Oracle ต้องใช้เวลาสักพัก ( 2-5 นาที ) ในการ Setup ฐานข้อมูลภายใน คุณสามารถเช็คสถานะได้ด้วยคำสั่ง:docker logs -f docker-oracle
ใช้คำสั่งdocker exec -it docker-oracle bash
-i( interactive ): ทำให้เราโต้ตอบกับ Container ได้-t( tty ): จำลองหน้าจอ Terminal ให้เราพิมพ์ได้สะดวก
การเข้าใช้งาน SQL*Plus (จัดการ Database)
ถ้าคุณต้องการรันคำสั่ง SQL หรือจัดการ User โดยไม่ผ่านโปรแกรมภายนอก ( เช่น DBeaver ) ให้ใช้คำสั่งนี้
เข้าใช้งานในฐานะ SYSDBA ( สิทธิ์สูงสุด )
docker exec -it docker-oracle sqlplus sys/SAj44GMbSLM8@FREEPDB1 as sysdba
หรือเข้าแบบปกติ (ใส่ Password ทีหลังเพื่อความปลอดภัย)
docker exec -it docker-oracle sqlplus system@FREEPDB1
การรันคำสั่งเดี่ยวๆ ( ไม่ต้องเข้าค้างไว้ )
บางครั้งเราแค่ต้องการรันคำสั่งเดียวแล้วจบไป เช่น การเช็คพื้นที่ Disk ภายใน Container:
docker exec -it docker-oracle df -h
⚠️ ข้อควรระวังและการจัดการไฟล์
เนื่องจากคุณมีการทำ Volume Mapping ไว้ที่ ./data หากคุณต้องการก๊อปปี้ไฟล์ Config หรือ Script SQL เข้าไปรัน คุณมี 2 ทางเลือก
- วางไฟล์ในโฟลเดอร์
./data: ไฟล์จะโผล่ใน/opt/oracle/oradataทันที ( เพราะเราเชื่อมกันไว้แล้ว ) - ใช้คำสั่ง
docker cp: ( กรณีไม่ได้ทำ Volume ไว้ )docker cp my_script.sql docker-oracle:/tmp/
สรุปคำสั่งที่ใช้บ่อยสำหรับ Oracle
| งานที่ต้องการทำ | คำสั่งที่ใช้ |
| เช็ค Log แบบ Real-time | docker logs -f docker-oracle |
| เข้าไปพิมพ์คำสั่ง Linux | docker exec -it docker-oracle bash |
| รัน SQL ภายใน | docker exec -it docker-oracle sqlplus system/SAj44GMbSLM8@FREEPDB1 |
| หยุดการทำงาน | docker stop docker-oracle |
อ่านเพิ่มเติม