淺析docker-compose部署mysql無法訪問的問題
什么是Docker-Compose
Compose項(xiàng)目來源于之前的fig項(xiàng)目,使用python語言編寫,與docker/swarm配合度很高。Compose 是 Docker 容器進(jìn)行編排的工具,定義和運(yùn)行多容器的應(yīng)用,可以一條命令啟動多個(gè)容器,使用Docker Compose不再需要使用shell腳本來啟動容器。 Compose 通過一個(gè)配置文件來管理多個(gè)Docker容器,在配置文件中,所有的容器通過services來定義,然后使用docker-compose腳本來啟動,停止和重啟應(yīng)用,和應(yīng)用中的服務(wù)以及所有依賴服務(wù)的容器,非常適合組合使用多個(gè)容器進(jìn)行開發(fā)的場景。docker-compose默認(rèn)的模板文件是 docker-compose.yml,其中定義的每個(gè)服務(wù)都必須通過 image 指令指定鏡像或 build 指令(需要 Dockerfile)來自動構(gòu)建。
使用 Compose 基本會有如下三步流程:
1.在 Dockfile 中定義你的應(yīng)用環(huán)境,使其可以在任何地方復(fù)制。
2.在 docker-compose.yml 中定義組成應(yīng)用程序的服務(wù),以便它們可以在隔離的環(huán)境中一起運(yùn)行。
3.最后,運(yùn)行dcoker-compose up,Compose 將啟動并運(yùn)行整個(gè)應(yīng)用程序。
下面看下docker-compose部署mysql無法訪問的問題。
這個(gè)問題困擾了我很久,當(dāng)使用docker-compose部署mysql之后,進(jìn)行容器后,使用mysql -u root -p 是可以訪問的,而使用sql客戶端卻是無法連接的,于是在google上找了很多資料,終于被我發(fā)現(xiàn),添加 command: --default-authentication-plugin=mysql_native_password 即可解決這個(gè)問題,它還是和密碼加密方式有關(guān)。
version: "3.3" services: Redis: image: sameersbn/redis:latest ports: - "6379:6379" volumes: - redis_data:/var/lib/redis restart: always mysql: image: mysql:latest restart: always command: --default-authentication-plugin=mysql_native_password #這行代碼解決無法訪問的問題 networks: - dev ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: abc123 MYSQL_USER: 'test' MYSQL_PASS: 'test' volumes: - mysql_data:/var/lib/mysql networks: dev: driver: bridge volumes: redis_data: mysql_data:
總結(jié)
以上所述是小編給大家介紹的docker-compose部署mysql無法訪問的問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對本站網(wǎng)站的支持!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信