【6-3 compose實(shí)戰(zhàn)】2022-03-10成功運(yùn)行說(shuō)明(2)關(guān)于無(wú)法運(yùn)行的一些問(wèn)題
即便是完全按照說(shuō)明啟動(dòng)起來(lái),也會(huì)遇到各種問(wèn)題。
我整理一下我遇到的幾個(gè)坑。
【問(wèn)題1】yml文件縮進(jìn)格式有問(wèn)題
ERROR: The Compose file './docker-compose.yml' is invalid because:
Additional properties are not allowed ('db' was unexpected)
。。。
因?yàn)閥ml文件是有格式要求的,尤其是縮進(jìn)空格,所以如果縮進(jìn)的空格不對(duì),會(huì)出現(xiàn)上面的問(wèn)題。
簡(jiǎn)單理解就是yml解析的時(shí)候?qū)ο笙旅娴膶傩詴?huì)變成其他層級(jí)的對(duì)象屬性。
【問(wèn)題2】docker-compose up -d運(yùn)行之后,程序不正常,但是自己也不知道怎么排查。
這個(gè)有兩個(gè)辦法:
docker-compose logs可以查看運(yùn)行的日志,出現(xiàn)什么問(wèn)題,自己排查就行了。
另外一個(gè),剛開(kāi)始運(yùn)行其實(shí)可以不要-d
docker-compose up 運(yùn)行,這樣雖然Ctrl+C會(huì)導(dǎo)致容器運(yùn)行結(jié)束,但是好在所有的日志都會(huì)打印出來(lái),幫助大家排查問(wèn)題。
我個(gè)人更推薦在學(xué)習(xí)和調(diào)試過(guò)程中使用。
【問(wèn)題3】MySQL數(shù)據(jù)庫(kù)一直無(wú)法訪問(wèn),一直提示Access denied的異常
這個(gè)時(shí)候nginx一般都能運(yùn)行,頁(yè)面給出的返回值是502
這也是我遇到的最后一個(gè)坑。
需要注意的地方有這么幾個(gè):
compose.yml文件中的MySQL的db容器的數(shù)據(jù)庫(kù)密碼配置是否正確。
MySQL數(shù)據(jù)庫(kù)容器是否正常。
我這邊解決這個(gè)問(wèn)題是直接忽略了,我選擇了通過(guò)修改MySQL容器的配置文件,無(wú)密碼登錄,因?yàn)槲覄倢W(xué)docker實(shí)在弄不明白MySQL的密碼配置在哪兒,并且我配置的都對(duì),就是無(wú)法正常訪問(wèn)MySQL,使用了navicat測(cè)試用具root用戶也無(wú)法訪問(wèn),最多只是ghost用戶能登錄,但是看不到名字為ghost的數(shù)據(jù)庫(kù)。
我的解決辦法共享一下:
登錄進(jìn)MySQL數(shù)據(jù)庫(kù)的容器:
[root@node2 ~]# docker exec -it ghost-db-1 bash
?
找到MySQL的配置文件:
root@763a858b6c37:/# cd /etc/mysql/mysql.conf.d/
root@763a858b6c37:/etc/mysql/mysql.conf.d# ls
mysqld.cnf
參考文檔:
docker的MySQL容器的配置文件
https://blog.csdn.net/zhaoyajie1011/article/details/98623666
?
查看MySQL數(shù)據(jù)庫(kù)鏡像名稱,找到名稱ghost-db-1
[root@node2 ghost]# docker ps
CONTAINER ID??????? IMAGE?????????????? COMMAND????????????????? CREATED???????????? STATUS??????????????????????????? PORTS??????????????????? NAMES
90cc509c32ca??????? ghost_nginx???????? "/docker-entrypoint.…"?? 23 minutes ago????? Up 23 minutes???????????????????? 0.0.0.0:80->80/tcp?????? ghost-nginx-1
9f6d46d6bab4??????? ghost_ghost-app ????"docker-entrypoint.s…"?? 23 minutes ago????? Restarting (255) 13 seconds ago??????????????????????????? ghost-ghost-app-1
763a858b6c37??????? mysql:5.7.15??????? "docker-entrypoint.s…"?? 23 minutes ago????? Up 13 minutes???????????????????? 0.0.0.0:3306->3306/tcp?? ghost-db-1
拷貝MySQL的配置文件到宿主機(jī):
?[root@node2 ghost]# docker cp ghost-db-1:/etc/mysql/mysql.conf.d/mysqld.cnf .
修改配置文件:
在[mysqld]標(biāo)簽下增加以下內(nèi)容:
[mysqld]
skip-grant-tables
參考文檔:
https://www.cnblogs.com/passer00/p/6931487.html
?
將修改后的配置文件拷貝回容器:
[root@node2 ghost]# docker cp mysqld.cnf ghost-db-1:/etc/mysql/mysql.conf.d/
進(jìn)入容器核對(duì)查看:
[root@node2 ghost]# docker exec -it ghost-db-1 bash
root@763a858b6c37:/# cd /etc/mysql/mysql.conf.d/
root@763a858b6c37:/etc/mysql/mysql.conf.d# more mysqld.cnf
重新啟動(dòng)容器:
[root@node2 ghost]# docker restart ghost-db-1
再次進(jìn)入容器,嘗試無(wú)密碼方式登錄:
[root@node2 ghost]# docker exec -it ghost-db-1 bash
root@763a858b6c37:/# mysql
Welcome to the MySQL monitor.? Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.15 MySQL Community Server (GPL)
?
Copyright (c) 2000, 2016, 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>
可以無(wú)密碼登陸了。
這樣ghost例子就可以正常運(yùn)行了。
當(dāng)然在生產(chǎn)環(huán)境中這樣做是非常不安全的,你們可以嘗試修改下MySQL密碼,然后用密碼方式訪問(wèn)。
就這樣,分享到這里。