一:安裝docker
首先,根據(jù)docker的官網(wǎng)莱衩,找到對(duì)應(yīng)的操作系統(tǒng)進(jìn)行安裝docker载萌。
對(duì)應(yīng)操作系統(tǒng)
這里給我的是Ubuntu,點(diǎn)進(jìn)入之后在Get Docker Engine - Ubuntu (Community)下點(diǎn)擊網(wǎng)址宋税。
Ubuntu
根據(jù)步驟進(jìn)行安裝摊崭,然后他會(huì)自行啟動(dòng)讼油。
如果是centos系統(tǒng),我們可以直接使用
yum install docker
啟動(dòng)后設(shè)置為開機(jī)啟動(dòng)
systemctl start docker
systemctl enable docker
二:安裝mysql
在dockerhub上找到mysql的安裝方式:dockerhub
輸入sudo docker pull mysql
然后可以通過docker images進(jìn)行查看鏡像呢簸。
接下來(lái)需要在容器中運(yùn)行mysql矮台。
注意: 這里需要注意,根據(jù)dockerhub mysql的運(yùn)行來(lái)說:這里不僅要端口映射根时,后臺(tái)運(yùn)行瘦赫,還得設(shè)置它的密碼。
那我們?cè)趺醋瞿兀?/p>
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
實(shí)際上蛤迎,應(yīng)該是這么做:
sudo docker run --name demomysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql
三:avicat ssh連接中ssh tunnel:the negotiation of encryption is failed
在navicat使用ssh通道連接服務(wù)器端數(shù)據(jù)庫(kù)時(shí)确虱,會(huì)出現(xiàn)
ssh tunnel:the negotiation of encryption is failed 或者ssh tunnel:server does not support diffie-hellman-group1-sha1 forkeyexchange的問題。
這是因?yàn)榉?wù)器關(guān)于ssh的加密設(shè)置沒有和navicat協(xié)調(diào)好替裆。
需要做以下操作:
1.進(jìn)入文件
sudo vim /etc/ssh/sshd_config
2.在文件的末尾添加
KexAlgorithms diffie-hellman-group1-sha1
Ciphers 3des-cbc
3.保存校辩,然后運(yùn)行
ssh-keygen -A
service sshd restart
四:mysql 1251
很遺憾,這次我下的是8.0.15版本辆童,所以Navicat依舊連接不上宜咒,那么我還得繼續(xù)解決這個(gè)問題,殘念...
那么我們還是看看..
進(jìn)入怎么進(jìn)入mysql的容器吧把鉴。
sudo docker ps -a
查看容器sudo docker start containerID
然后進(jìn)入它的base中
docker exec -it mysql(容器名) bash
接下來(lái)就可以操作了:
mysql -uroot -p
接下來(lái)操作:
1.對(duì)遠(yuǎn)程連接進(jìn)行授權(quán)
mysql> GRANT ALL ON *.* TO 'root'@'%';
2.更改密碼的加密規(guī)則
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
'root' 為你自己定義的用戶名
'localhost' 指的是用戶開放的IP故黑,可以是'localhost'(僅本機(jī)訪問,相當(dāng)于127.0.0.1)庭砍,可以是具體的'...'(具體某一IP)场晶,也可以是 '%' (所有IP均可訪問)
'password' 是你使用的用戶密碼
3.刷新權(quán)限
mysql> flush privileges;
完成!
三:部署spring boot項(xiàng)目
這里首先將項(xiàng)目生成一個(gè)jar包怠缸。
1.生成鏡像
在服務(wù)器上新建一個(gè)文件夾诗轻。 比如我就在/home/user下建立了一個(gè)docker文件夾。然后將jar包放入其中凯旭。
進(jìn)行第二步概耻,寫一個(gè)Dockerfile文件:建議查看這個(gè)
FROM java:8
VOLUME /tmp
ADD cms-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
和jar包放入一個(gè)文件夾使套。
然后使用docker build命令生成鏡像:
sudo docker build -t xxx(鏡像名字) .
注意:這里的.是不能漏的,表示在當(dāng)前文件夾下(所以你一定要cd進(jìn)這個(gè)jar包所在文件夾)
然后運(yùn)行這個(gè)鏡像
sudo docker run --net=host -d xxx
注意一定要使用host網(wǎng)絡(luò)連接方式鞠柄,否則項(xiàng)目會(huì)連接不上mysql
這是因?yàn)閐ocker會(huì)自動(dòng)給每個(gè)容器分配ip侦高,但是項(xiàng)目里配置的mysql地址是localhost,在容器內(nèi)連接localhost是連接容器本身而不是宿主機(jī)的localhost厌杜,所以一直找不到mysql奉呛。所以采用host的網(wǎng)絡(luò)方式將容器與宿主機(jī)共用一個(gè)Network Namespace,這樣容器內(nèi)localhost就是宿主機(jī)的localhost了
完畢。