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

相关文章
相关标签/搜索