• flask+mysql的Docker 部署


    docker从入门到实践

    https://yeasy.gitbooks.io/docker_practice/image/build.html


    ## 一、命令行方式+dockerfile部署。

    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 mysql

    创建一个容器名字叫做mysql
    -v 挂载本地目录与容器内的目录,用:区分。冒号前面是本地宿主机目录,后面的是容器内的目录。如果/database不存在的话会自动创建。
    挂载好了之后就可以实现本地与容器内目录的互联。比如你在挂载的本地目录里新增一个文件。那么容器内的那个目录也会相应的增加这个文件。
    -p 6666:3306 端口映射 :前是本地端口,后是容器端口。 这样设置好之后,那么你连接宿主机上6666端口就可以访问容器内的3306端口了。(6666我随便设的)
    下面的Navicat就可以连接了。
    -e MYSQL_ROOT_PASSWORD=woaini123.. 设置环境变量 ,也就是设置数据库root密码,我没有设置用户,所以用的root。
    -d 后台运行。
    最后 的mysql 是镜像名称。

    这样运行之后就有了一个mysql容器在运行了。
    2️⃣配置mysql并且创建数据库。
    单单有这个容器是无法连接上mysql的。Navicat会提示连接失败。
    mysql 8.0 默认使用 caching_sha2_password 身份验证机制;客户端不支持新的加密方式。
    解决方案:
    修改用户(root)的加密方式。
    这里看上一篇docker(三)里有讲。

    接下来遇到的问题是容器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连接层上

    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 内容:

    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.

    大功告成,flask可以访问到mysql数据库了。

  • 相关阅读:
    Redis之面试题总结
    nginx入门,安装
    NGINX工作原理(2)
    Ngnx工作原理(1)
    Linux之常用脚本
    进程管理工具之supervisor[详解]
    PHP进阶书籍
    LVS、Nginx及HAProxy
    高级程序员与初级程序员差别在哪里?
    详解Wox
  • 原文地址:https://www.cnblogs.com/plusUltra/p/10911661.html
Copyright © 2020-2023  润新知