flask+mysql的Docker 部署

##docker從入門到實踐 https://yeasy.gitbooks.io/docker_practice/image/build.htmlhtml

<hr> ## 1、命令行方式+dockerfile部署。mysql

1️⃣ 部署mysql容器 docker pull mysql #拉取mysql鏡像 docker run --name mysql -v /Users/zhaotengwei/Desktop/mysql:/database -p 6666:3306 -e MYSQL_ROOT_PASSWORD=woaini123.. -d mysqlgit

建立一個容器名字叫作mysql -v 掛載本地目錄與容器內的目錄,用:區分。冒號前面是本地宿主機目錄,後面的是容器內的目錄。若是/database不存在的話會自動建立。 掛載好了以後就能夠實現本地與容器內目錄的互聯。好比你在掛載的本地目錄裏新增一個文件。那麼容器內的那個目錄也會相應的增長這個文件。 -p 6666:3306 端口映射 :前是本地端口,後是容器端口。 這樣設置好以後,那麼你鏈接宿主機上6666端口就能夠訪問容器內的3306端口了。(6666我隨便設的) 下面的Navicat就能夠鏈接了。 -e MYSQL_ROOT_PASSWORD=woaini123.. 設置環境變量 ,也就是設置數據庫root密碼,我沒有設置用戶,因此用的root。 -d 後臺運行。 最後 的mysql 是鏡像名稱。 web

這樣運行以後就有了一個mysql容器在運行了。 2️⃣配置mysql而且建立數據庫。 單單有這個容器是沒法鏈接上mysql的。Navicat會提示鏈接失敗。 mysql 8.0 默認使用 caching_sha2_password 身份驗證機制;客戶端不支持新的加密方式。 解決方案: 修改用戶(root)的加密方式。 這裏看上一篇docker(三)裏有講。sql

接下來遇到的問題是容器mysql的中文亂碼問題。 https://blog.csdn.net/m0_37639542/article/details/72852875這一篇講的很詳細。 簡單列舉一下步驟: 1.docker exec -ti xxx(容器id) /bin/bash #進入容器 2.mysql -u root -p #進入mysql 3.mysql>SHOW VARIABLES LIKE 'character_set_%';//查看數據庫字符集 基本上都如圖所示:默認就是瑞典latin1 4. SHOW VARIABLES LIKE 'collation_%'; 圖上的第一個 connection 就是咱們經過workbench等客戶端鏈接的時候指定的編碼。 外部訪問數據亂碼的問題就出在這個connection鏈接層上docker

5.接下來我作了兩件事來解決這個問題: 第一步: 第二步: 修改配置文件 配置文件在etc/mysql/mysql.conf.d/mysql.cnf這個文件裏頭 (容器目錄) 要本身安裝vim apt-get updata apt-get install vim 修改結果: 最後Navicat導出主機上的sql數據庫,在鏈接的容器數據庫中載入sql文件建立容器中的數據庫。 mysql 容器部分完成。數據庫

3️⃣部署flask 容器。 flask我用的dockerfile部署的。。 1.在你的web項目中touch一個dockerfile。 項目結構: dockerfile 內容: flask

WORKDIR 指定工做目錄 格式爲 WORKDIR <工做目錄路徑>。如該目錄不存在,WORKDIR 會幫你創建目錄。 使用 WORKDIR 指令能夠來指定工做目錄(或者稱爲當前目錄),之後各層的當前目錄就被改成指定的目錄,最好不要在RUN中用cd手動切換目錄。 COPY . /app 複製當前目錄的全部文件到/app目錄下。 dockerfile編寫好以後進入dockerfile所在的目錄執行 docker build -t flask . #根據dockerfile建立一個叫flask的鏡像。 最後 docker run --name web -p 5000:5000 --link mysql:mysql -d flask 建立容器並與mysql容器link.vim

大功告成,flask能夠訪問到mysql數據庫了。bash

相關文章
相關標籤/搜索