• 部署上次的Hapi到Windows+Docker,WindowsDocker


    前言:

    理论的就不多说了,具体的架构看图。web这里是上篇文章开发的Hapi服务,数据库Mysql,废话不多说,粗略的画了下,架构图如下:

     

    Mysql镜像拉取,配置

    数据库镜像查找

    docker search mysql

      不多解释,这里我直接拉取Mysql镜像,并且把端口映射到宿主机8087,数据库默认密码设置123456    -d mysql 为刚刚上面查询到的镜像NAME,此时镜像和容器都已经创建

    docker run --name test-mysql -p 8087:3306  -e MYSQL_ROOT_PASSWORD=123456 -d mysql

      查看Images,和容器,test-mysql 已经运行在容器上

    docker images
    docker ps

      进入Mysql的运行环境

    docker exec -it test-mysql /bin/bash
    mysql -uroot -p123456

      第一句执行成功会root权限进入容器的环境

         

      上面语句我分为了二段,可以直接合并使用。

       测试下连接,输入如下:

      

    show databases;

      

      此时用宿主机的数据库管理工具,提示如下

     

      OK,正常连接,有的可能会连接失败,解决方法如下:

      对数据库授权

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

      特殊情况可能还是无法使用,这时候尝试改一下密码,再连接,OK! 这只是我遇到的情况。

    update user set authentication_string = password('root') where user = 'root';

      连接成功,说明docker中的mysql已经可以在局域网中访问了。

    打包项目文件,生成镜像,绑定数据库

      打开项目文件主目录,新建 Dockerfile,内容输入如下

    #Dockerfile文件
    FROM docker.io/node   //node版本这里不指定了,默认最新版
    WORKDIR /home/Service  //指定工作目录为容器中的/home...下
    # Bundle app source
    COPY . /home/Service 
    RUN npm install        
    EXPOSE 8888             //开放8888端口
    CMD [ "npm", "start" ]

      注意运行程序中,如node的项目,我们需要配置一样的端口,还需要配置站点地址,如下:

      配置完毕,打包镜像 .不能少,代表当前路径

    docker build -t test-hapi .

      

      运行镜像,与数据库容器建立连接

    docker run --name my-hapi --link test-mysql:test-mysql -p 8088:8888 -d test-hapi

      进入容器日志查看运行情况

    docker logs eb01307bc408 //容器id docker ps 查看

      完美。

      OK,搭建就这么完成了。需要注意的如下:

      容器用了--Link,那么web应用的配置文件数据库连接,应该改成刚刚link 的名字,并且不能带端口,如下

      为什么用localhost,因为你把容器的地址映射到了宿主机,并且映射端口到了宿主机的8088 ,实际请求就被转回了容器地址,也就是 8888。

      node项目可能有点特殊,还需要配置为容器的IP:

      

       网络方面,用windows系统会自动生成虚拟机,我需要容器访问内网,配置如下:

      

  • 相关阅读:
    答题卡
    hdu 5451 Best Solver
    L. Poor God Water(ACM-ICPC 2018 焦作赛区网络预赛)
    MicroRNA Ranking(Tehran2016)
    Split The Tree(2018东北四省赛)
    Django项目基础开发流程
    暑假学习进度记录墙
    抖音字体设置
    十大危险cmd指令
    奶牛的聚会
  • 原文地址:https://www.cnblogs.com/wzgj/p/8881627.html
Copyright © 2020-2023  润新知