Mount Volume to Container
เนื่องจาก container เวลาที่เราสร้าง และลบไปข้อมูลต่าง ๆ ที่เคยเกิดขึ้นในนั้นจะหายไปด้วย หากเราต้องการให้ข้อมูลใน container ยังคงอยู่เหมือนเดิมเมื่อเราสร้างมันขึ้นมา หรือเมื่อเราลบ container ออกไปแล้วเราต้องการให้ข้อมูลใน container ยังคงอยู่เหมือนเดิม เราจะต้องทำการ mount volume ของเครื่อง host ไปยัง container ด้วย
AtlasX Web Service
ซึ่ง AtlasX Web Service เองเดิมทีจะมีการเก็บข้อมูลต่าง ๆ ที่ FileLocalStorage ซึ่งเป็นการเก็บข้อมูลในรูปแบบของไฟล์ และเมื่อเราลบ container ออกไปแล้ว ข้อมูลทั้งหมดที่เก็บไว้ใน FileLocalStorage ก็จะหายไปด้วย ดังนั้นเราจะทำการ mount volume ของเครื่อง host ไปยัง container ด้วย
ให้ทำการสร้าง volume ด้วยคำสั่ง
docker volume create <volume-name>เช่น
docker volume create atlasx-webservice-dataจากนั้นให้เพิ่มการ mount volume ของเครื่อง host ไปยัง container ในไฟล์ docker-compose.yml ดังนี้
version: '3.4'
webservice:
image: '${WEBSERVICE_IMAGE}:${WEBSERVICE_VERSION}'
container_name: atlasx-webservice
networks:
- frontend
labels:
- 'traefik.enable=true'
# HTTP
- 'traefik.http.routers.${WEBSERVICE_PROJECT_NAME}.entrypoints=web'
# HTTPS
# - 'traefik.http.routers.${WEBSERVICE_PROJECT_NAME}.entrypoints=websecure'
# - 'traefik.http.routers.${WEBSERVICE_PROJECT_NAME}.tls=true'
- 'traefik.http.routers.${WEBSERVICE_PROJECT_NAME}.rule=Host(`${WEBSERVICE_URL}`) && PathPrefix(`/${WEBSERVICE_BASEPATH}`)'
- 'traefik.http.routers.${WEBSERVICE_PROJECT_NAME}.middlewares=${WEBSERVICE_PROJECT_NAME}-stripprefix'
- 'traefik.http.middlewares.${WEBSERVICE_PROJECT_NAME}-stripprefix.stripprefix.prefixes=/${WEBSERVICE_BASEPATH}'
- 'traefik.http.services.${WEBSERVICE_PROJECT_NAME}.loadbalancer.server.port=8080'
environment:
- ASPNETCORE_BASEPATH=/${WEBSERVICE_BASEPATH}
volumes:
- atlasx-webservice-data:/app/FileLocalStorage
restart: unless-stopped
volumes:
atlasx-webservice-data:
external: trueเพียงเท่านี้เราก็สามารถทำการสร้างและลบ container ได้โดยที่ข้อมูลทั้งหมดที่เก็บไว้ใน FileLocalStorage จะยังคงอยู่เหมือนเดิม