# 前言
這篇是我看到 [[Docker] 如何讓 MySql 資料保存,不會隨著容器而消失](https://blog.mewo.com.tw/docker/docker-%E5%A6%82%E4%BD%95%E8%AE%93-mysql-%E4%BF%9D%E5%AD%98%EF%BC%8C%E4%B8%8D%E6%9C%83%E9%9A%A8%E8%91%97%E5%AE%B9%E5%99%A8%E8%80%8C%E6%B6%88%E5%A4%B1/?fbclid=IwAR29_1eWXWRUYc8w_pUzs0b8oK_1XACRTVlcqPiz60QJipYG-etzRzvJCpU)
跟著實作的紀錄
# Container 內容持久化
開發的時候 Docker 扮演一個重要的角色,我們能透過 docker-compose 快速的啟用一些需要使用到 App服務. 此篇就是要來介紹,如果透過 Volume 的方式,將 MySql Container 內容持久化。
# Docker 指令介紹
根據 dokcer-compose .yaml 啟動
```
docker-compose up
```
停止 contanier
```
docker-compose stop
```
移除 container
```
docker-compose down
```
使用 docker 指令的時候,很會透過 docker-compose down 來關閉 container,這時候就會發現存放在 mysql 中的 資料,在下一次啟動 container 的時候就會全部消失。
# 如何解決 docker-compose down 資料也不會消失
在 yaml 中新增 Volumes,Volumes 會將資料存放於 Container 之外,範例中就是會把資料存放於 db_data 這個資料夾
```
volumes:
- ./db_data:/var/lib/mysql
```
此時使用 docker-compose down 關閉 container
再透過 docker-compose up 就會發現 mysql 的資料還存在
# Yaml 設定檔內容
```
version: "3.9"
services:
mydb:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql
restart: always
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: mydatebae
MYSQL_USER: root
MYSQL_PASSWORD: password
networks:
LAN:
driver: bridge
name: mysql_LAN
```