亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【6-3 compose實戰】2022-03-10成功運行說明(2)關于無法運行的一些問題

即便是完全按照說明啟動起來,也會遇到各種問題。

我整理一下我遇到的幾個坑。

【問題1】yml文件縮進格式有問題

ERROR: The Compose file './docker-compose.yml' is invalid because:

Additional properties are not allowed ('db' was unexpected)

。。。

因為yml文件是有格式要求的,尤其是縮進空格,所以如果縮進的空格不對,會出現上面的問題。

簡單理解就是yml解析的時候對象下面的屬性會變成其他層級的對象屬性。


【問題2】docker-compose up -d運行之后,程序不正常,但是自己也不知道怎么排查。

這個有兩個辦法:

docker-compose logs可以查看運行的日志,出現什么問題,自己排查就行了。

另外一個,剛開始運行其實可以不要-d

docker-compose up 運行,這樣雖然Ctrl+C會導致容器運行結束,但是好在所有的日志都會打印出來,幫助大家排查問題。

我個人更推薦在學習和調試過程中使用。


【問題3】MySQL數據庫一直無法訪問,一直提示Access denied的異常

這個時候nginx一般都能運行,頁面給出的返回值是502

這也是我遇到的最后一個坑。


需要注意的地方有這么幾個:

  1. compose.yml文件中的MySQL的db容器的數據庫密碼配置是否正確。

  2. MySQL數據庫容器是否正常。

我這邊解決這個問題是直接忽略了,我選擇了通過修改MySQL容器的配置文件,無密碼登錄,因為我剛學docker實在弄不明白MySQL的密碼配置在哪兒,并且我配置的都對,就是無法正常訪問MySQL,使用了navicat測試用具root用戶也無法訪問,最多只是ghost用戶能登錄,但是看不到名字為ghost的數據庫。


我的解決辦法共享一下:

登錄進MySQL數據庫的容器:

[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

root@763a858b6c37:/etc/mysql/mysql.conf.d#

參考文檔:

docker的MySQL容器的配置文件

https://blog.csdn.net/zhaoyajie1011/article/details/98623666

?

查看MySQL數據庫鏡像名稱,找到名稱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的配置文件到宿主機:

?[root@node2 ghost]# docker cp ghost-db-1:/etc/mysql/mysql.conf.d/mysqld.cnf .

修改配置文件:

在[mysqld]標簽下增加以下內容:

[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/

進入容器核對查看:

[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

重新啟動容器:

[root@node2 ghost]# docker restart ghost-db-1

再次進入容器,嘗試無密碼方式登錄:

[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>

可以無密碼登陸了。

這樣ghost例子就可以正常運行了。

當然在生產環境中這樣做是非常不安全的,你們可以嘗試修改下MySQL密碼,然后用密碼方式訪問。


就這樣,分享到這里。


正在回答

舉報

0/150
提交
取消

【6-3 compose實戰】2022-03-10成功運行說明(2)關于無法運行的一些問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號