docker實(shí)踐之docker-compose部署mysql方式
前面用golang寫(xiě)了一個(gè)api server,但是要用到一些測(cè)試數(shù)據(jù),又要方便給別人,想來(lái)用docker部署環(huán)境最簡(jiǎn)單了。
只需要簡(jiǎn)單執(zhí)行兩個(gè)命令就可以搞定了。
博主的環(huán)境是windows然后在windows里面部署一個(gè)centos7的虛擬機(jī)。
在虛擬機(jī)里面安裝部署了docker。
1、安裝部署docker
在linux下面只需簡(jiǎn)單的一個(gè)命令:
yum install docker
其他的系統(tǒng)類似。
2、編寫(xiě)docker-compose文件
version: '2' services: mysql: network_mode: "host" environment: MYSQL_ROOT_PASSWORD: "yourpassword" MYSQL_USER: 'test' MYSQL_PASS: 'yourpassword' image: "docker.io/mysql:latest" restart: always volumes: - "./db:/var/lib/mysql" - "./conf/my.cnf:/etc/my.cnf" - "./init:/docker-entrypoint-initdb.d/"
這里稍微解釋一下,其中,network_mode為容器的網(wǎng)絡(luò)模式,一般自己測(cè)試用host模式就可以了。
MYSQL_ROOT_PASSWORD
為數(shù)據(jù)庫(kù)的密碼,也就是root用戶的密碼。
MYSQL_USER
和 MYSQL_PASS
另外一個(gè)用戶名和密碼。image為你拉取鏡像的地址和版本,當(dāng)然也可以換成自己的鏡像倉(cāng)庫(kù),這里使用官方的。
volumes里面的參數(shù)為映射本地和docker容器里面的文件夾和目錄。
./db
用來(lái)存放了數(shù)據(jù)庫(kù)表文件./conf/my.cnf
存放自定義的配置文件./init
存放初始化的腳本
ports 為映射主機(jī)和容器的端口。
寫(xiě)好docker-compose.yml后把相應(yīng)的文件夾建好,當(dāng)然也可以換成你自己的。
下面的是博主的文件夾結(jié)構(gòu)。
root@localhost mysql # tree . ├── conf │ └── my.cnf ├── db ├── docker-compose.yml └── init └── init.sql
3、編寫(xiě)配置文件和初始化文件
root@localhost conf # cat my.cnf [mysqld] user=mysql default-storage-engine=INNODB character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8
這里的配置文件只是一個(gè)簡(jiǎn)單的舉例,大家需要根據(jù)自己的配置來(lái)更改。
root@localhost init # cat init.sql use mysql; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword'; create database test; use test; create table user ( id int auto_increment primary key, username varchar(64) unique not null, email varchar(120) unique not null, password_hash varchar(128) not null, avatar varchar(128) not null ); insert into user values(1, "zhangsan","test12345@qq.com","passwd","avaterpath"); insert into user values(2, "lisi","12345test@qq.com","passwd","avaterpath");
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
這一句比較重要,放開(kāi)root登入權(quán)限,如果你要在其他的主機(jī)用root用戶登入到數(shù)據(jù)庫(kù)就需要寫(xiě)入這句話。
其他的語(yǔ)句就是建表操作和插入數(shù)據(jù)的操作了。
4、啟動(dòng)數(shù)據(jù)庫(kù)
root@localhost mysql # docker-compose pull .......下載鏡像過(guò)程 root@localhost mysql # docker-compose up -d mysql_mysql_1_234be9b015e4 is up-to-date root@localhost mysql #
此處需要在存放docker-compose.yml的文件夾進(jìn)行操作。
5、檢查初始化的數(shù)據(jù)
root@localhost mysql # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cffe8d56f222 docker.io/mysql:latest "docker-entrypoint..." 21 minutes ago Up 21 minutes mysql_mysql_1_234be9b015e4 root@localhost mysql # docker exec -it cffe8d56f222 bash root@localhost:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 8.0.13 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use test; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> select * from user; +----+----------+------------------+---------------+------------+ | id | username | email | password_hash | avatar | +----+----------+------------------+---------------+------------+ | 1 | zhangsan | test12345@qq.com | passwd | avaterpath | | 2 | lisi | 12345test@qq.com | passwd | avaterpath | +----+----------+------------------+---------------+------------+ 2 rows in set (0.00 sec)
可以看到數(shù)據(jù)存入到數(shù)據(jù)庫(kù)當(dāng)中去。
6、驗(yàn)證遠(yuǎn)程連接
在windows宿主機(jī)上面也可以用Navicat連接上數(shù)據(jù)庫(kù)。
ip填虛擬機(jī)的ip,port填寫(xiě)3306,密碼為docker-compose文件中的root密碼。
此處需要將宿主機(jī)(我是liunx虛擬機(jī))的防火墻給關(guān)掉,要不然一直連接不上,或者你開(kāi)啟3306端口給外面訪問(wèn)也可以。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
gitlab-runner中搭建nvm、nrm以及優(yōu)化maven打包方式
文章描述了如何在GitLab Runner上配置NVM、NRM,并優(yōu)化Maven打包過(guò)程,通過(guò)上述配置和優(yōu)化,作者將Maven打包時(shí)間從三分鐘縮短到不到40秒2024-11-11docker版es、milvus、minio啟動(dòng)命令詳解
這篇文章主要介紹了docker版es、milvus、minio啟動(dòng)命令詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11docker-compose ports和expose的區(qū)別詳解
這篇文章主要介紹了docker-compose ports和expose的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01