Docker一鍵部署MySQL和Redis數(shù)據(jù)庫的實(shí)現(xiàn)
一、前言
數(shù)據(jù)庫是現(xiàn)代應(yīng)用開發(fā)中不可或缺的一部分,MySQL和Redis作為兩種廣泛使用的數(shù)據(jù)庫系統(tǒng),分別用于關(guān)系型數(shù)據(jù)庫和鍵值存儲。本文旨在通過Docker和Docker Compose的方式,提供一個(gè)簡潔明了的一鍵部署方案,確保數(shù)據(jù)庫服務(wù)的穩(wěn)定運(yùn)行與持久化存儲。
二、Docker及Docker Compose安裝
2.1 Docker安裝
Docker安裝過程略有不同,根據(jù)您的操作系統(tǒng)選擇適合的安裝方式。以下以Ubuntu為例,簡要說明安裝步驟:
更新包管理器
sudo apt-get update
安裝Docker
sudo apt-get install -y docker.io
啟動(dòng)Docker服務(wù)并設(shè)置開機(jī)自啟
sudo systemctl start docker sudo systemctl enable docker
驗(yàn)證Docker安裝
sudo docker --version
2.2 Docker Compose安裝
Docker Compose的安裝相對簡單,同樣以Ubuntu為例:
下載Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
請根據(jù)
https://github.com/docker/compose/releases
頁面上的最新版本調(diào)整上述命令中的版本號。賦予執(zhí)行權(quán)限
sudo chmod +x /usr/local/bin/docker-compose
驗(yàn)證Docker Compose安裝
docker-compose --version
三、編寫Docker Compose文件
接下來,我們將編寫一個(gè)docker-compose.yml
文件來定義MySQL和Redis的服務(wù),以及它們之間的網(wǎng)絡(luò)配置和持久化存儲設(shè)置。
version: "3" # 聲明一個(gè)名為 'network' 的網(wǎng)絡(luò),配置子網(wǎng)和默認(rèn)網(wǎng)關(guān) networks: network: ipam: driver: default config: - subnet: '177.7.0.0/16' # 定義MySQL和Redis的持久化存儲卷 volumes: mysql: redis: # 定義服務(wù) services: mysql: image: mysql:8.0.21 container_name: gva-mysql command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always ports: - "13306:3306" environment: MYSQL_ROOT_PASSWORD: 'Aa@6447985' # 設(shè)置root用戶密碼 MYSQL_DATABASE: 'qmPlus' MYSQL_USER: 'gva' MYSQL_PASSWORD: 'Aa@6447985' healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "gva", "-pAa@6447985"] interval: 10s timeout: 5s retries: 3 volumes: - mysql:/var/lib/mysql # 將MySQL的data目錄掛載到volume上,實(shí)現(xiàn)數(shù)據(jù)持久化 - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 初始化腳本 networks: network: ipv4_address: 177.7.0.13 # 指定MySQL容器的IP地址 redis: image: redis:6.0.6 container_name: gva-redis restart: always ports: - '16379:6379' healthcheck: test: ["CMD-SHELL", "redis-cli ping | grep PONG || exit 1"] interval: 10s timeout: 5s retries: 3 volumes: - redis:/data # 將Redis的數(shù)據(jù)目錄掛載到volume上,實(shí)現(xiàn)數(shù)據(jù)持久化 networks: network: ipv4_address: 177.7.0.14 # 指定Redis容器的IP地址
3.1 配置解釋
networks: 定義了一個(gè)名為
network
的自定義網(wǎng)絡(luò),其中設(shè)置了子網(wǎng)范圍為177.7.0.0/16
。這樣可以為MySQL和Redis容器分配固定的IP地址,便于管理和維護(hù)。volumes: 為MySQL和Redis分別定義了存儲卷
mysql
和redis
,用于保存數(shù)據(jù)庫文件,防止數(shù)據(jù)丟失。services: 這里定義了兩個(gè)服務(wù),分別是MySQL和Redis。
MySQL:
- 使用指定版本的MySQL鏡像。
- 通過
command
字段設(shè)置了MySQL的啟動(dòng)參數(shù),包括字符集和排序規(guī)則。 environment
字段設(shè)置了MySQL的環(huán)境變量,包括初始化數(shù)據(jù)庫、用戶名、密碼等。healthcheck
字段定義了健康檢查機(jī)制,幫助監(jiān)控MySQL服務(wù)的正常運(yùn)行狀態(tài)。volumes
字段將MySQL的data目錄與volume關(guān)聯(lián)起來,同時(shí)掛載了初始化腳本。networks
字段將MySQL容器加入到自定義網(wǎng)絡(luò),并指定了其IP地址。
Redis:
- 使用指定版本的Redis鏡像。
healthcheck
字段定義了健康檢查機(jī)制,幫助監(jiān)控Redis服務(wù)的正常運(yùn)行狀態(tài)。volumes
字段將Redis的數(shù)據(jù)目錄與volume關(guān)聯(lián)起來。networks
字段將Redis容器加入到自定義網(wǎng)絡(luò),并指定了其IP地址。
init.sql: 這是一個(gè)初始化腳本,用于在MySQL啟動(dòng)時(shí)自動(dòng)創(chuàng)建數(shù)據(jù)庫
qmPlus
和用戶gva
,并授予相應(yīng)的權(quán)限。具體內(nèi)容如下:CREATE DATABASE IF NOT EXISTS qmPlus; CREATE USER IF NOT EXISTS 'gva'@'177.7.0.1' IDENTIFIED BY 'Aa@6447985'; GRANT ALL PRIVILEGES ON qmPlus.* TO 'gva'@'177.7.0.1'; FLUSH PRIVILEGES;
注意:這里創(chuàng)建的用戶gva
配置允許從177.7.0.1
進(jìn)行連接,這個(gè)是容器網(wǎng)絡(luò)的網(wǎng)關(guān)地址。為什么要配置為它?是為了讓容器外的宿主機(jī)能夠通過13306端口連接。
四、啟動(dòng)服務(wù)
在編寫好docker-compose.yml
文件后,即可通過Docker Compose命令來啟動(dòng)服務(wù)。
創(chuàng)建并啟動(dòng)容器
sudo docker-compose -f deploy/docker-compose/docker-compose.yaml up -d
-d
表示以后臺模式(detached)運(yùn)行容器。
檢查容器狀態(tài)
docker-compose ps #進(jìn)入某個(gè)容器 sudo docker exec -it gva-mysql bash #查看容器掛載的卷 sudo docker volume ls #進(jìn)入容器的卷 sudo docker run -it --rm -v docker-compose_server:/volume-data --name temp-container busybox #查看端口占用情況 sudo netstat -tulpn | grep :13306
該命令將列出所有由
docker-compose.yml
文件定義的服務(wù)及其狀態(tài)。
五、停止服務(wù)
若需要停止并移除所有由docker-compose.yml
文件定義的容器,可以使用以下命令:
docker-compose down
- 該命令會(huì)停止并移除所有服務(wù)對應(yīng)的容器,同時(shí)保留volume中的數(shù)據(jù),從而達(dá)到持久化存儲的目的。
六、總結(jié)
通過本文,您已經(jīng)了解了如何利用Docker Compose實(shí)現(xiàn)MySQL和Redis的一鍵部署,包括Docker和Docker Compose的安裝、docker-compose.yml
文件的編寫以及服務(wù)的啟動(dòng)與停止。
這種方法不僅簡化了數(shù)據(jù)庫服務(wù)的配置和管理,還確保了數(shù)據(jù)的安全性。
到此這篇關(guān)于Docker一鍵部署MySQL和Redis數(shù)據(jù)庫的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker一鍵部署MySQL和Redis內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker下多容器搭建 lamp的詳細(xì)過程(httpd+mysql+php+redis)
- docker安裝mysql、redis鏡像方式
- Docker安裝MySQL和Redis的方法步驟
- 解決docker重啟redis,mysql數(shù)據(jù)丟失的問題
- Docker 部署Mysql 服務(wù)和Redis 服務(wù)的方法
- Docker安裝Tomcat、MySQL和Redis的步驟詳解
- Docker部署Django+Mysql+Redis+Gunicorn+Nginx的實(shí)現(xiàn)
- docker搭建php+nginx+swoole+mysql+redis環(huán)境的方法
- Docker安裝常用組件(mysql,redis)的方法
- Docker + Nodejs + Kafka + Redis + MySQL搭建簡單秒殺環(huán)境
相關(guān)文章
docker搭建nacos1.3.0的實(shí)現(xiàn)
這篇文章主要介紹了docker搭建nacos1.3.0的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Dockerfile及新型容器鏡像構(gòu)建技術(shù)詳解
本文詳細(xì)介紹了dockerfile以及新型容器鏡像構(gòu)建技術(shù),文章中通過詳細(xì)的代碼示例介紹了dockerfile生成容器鏡像器的全過程,感興趣的小伙伴可以參考一下2023-04-04如何在centos的docker里安裝jupyter并開放端口
上次有一朋友問小編如何在centos的docker里安裝jupyter并開放端口呢?在這就不一一回復(fù)大家了,下面小編把我的個(gè)人經(jīng)驗(yàn)分享到腳本之家平臺,感興趣的朋友一起看看吧2021-08-08windows10下安裝docker且使用wsl2安裝雙系統(tǒng)并構(gòu)建最小jre鏡像和應(yīng)用鏡像
這篇文章主要給大家介紹了windows10下安裝docker且使用wsl2安裝雙系統(tǒng)并構(gòu)建最小jre鏡像和應(yīng)用鏡像的流程步驟,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-08-08Docker部署UI自動(dòng)化測試環(huán)境的實(shí)現(xiàn)步驟
本文主要介紹了Docker部署UI自動(dòng)化測試環(huán)境的實(shí)現(xiàn)步驟,通過Docker可以快速創(chuàng)建、部署和測試腳本,提高測試效率,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08docker 數(shù)據(jù)目錄遷移的兩種實(shí)現(xiàn)方法
本文主要介紹了docker 數(shù)據(jù)目錄遷移的兩種實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03