前言:

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

Mysql镜像拉取,配置

数据库镜像查找

docker search mysql

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

docker run --name test-mysql -p :  -e MYSQL_ROOT_PASSWORD= -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 : -d test-hapi

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

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

  完美。

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

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

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

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

  

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

  

部署上次的Hapi到Windows+Docker,WindowsDocker的更多相关文章

  1. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  2. Docker:四、Docker进阶 Windows Docker IIS 部署

    前面的三篇docker 文档大家看的肯定不过瘾,自己可能也已经上手一试了...不知道有没有发现问题... 哈哈... 我来说说我遇到的问题哦 一.windows docker 镜像越来越大 默认的do ...

  3. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  4. 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

    上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...

  5. 第一篇 Windows docker 概述

    本人行业属于智能制造,偏向工厂应用,客户端程序全部是.Net 的 WinForm:本系统的后台是.Net,多系统交互的有java的:因系统发布效率问题,想采用docker Windows 的生产力环境 ...

  6. 解决 Windows Docker 安装 Gitlab Volume 权限问题

    本文首发于我的个人博客,解决 Windows Docker 安装 Gitlab Volume 权限问题 ,欢迎访问! 记录一下 Windows10 下 Docker 安装 Gitlab 的步骤. Ca ...

  7. [第四篇]——Windows Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结

    Windows Docker 安装 Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境. Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境, ...

  8. 部署前后端为独立的 Docker 节点

    在『服务器部署 Vue 和 Django 项目的全记录』一文中,介绍了在服务器中使用 Nginx 部署前后端项目的过程.然而,当 Web 应用流量增多时,需要考虑负载均衡.流量分发.容灾等情况,原生的 ...

  9. 【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志

    如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动 ...

随机推荐

  1. 自己开发的 vue 滑动按钮组件 vue-better-slider

    写在前面的 这个人第一次尝试开发并发布一个 vue 的组件,该组件实现了类似 ios 手机淘宝客户端 -> 消息界面中消息的滑动删除功能等,如下为该组件的文档. 一个 Vue 的滑动按钮组件,有 ...

  2. Konckout第五个实例:各种事件绑定

    点击加一: <!doctype html> <html > <head> <meta http-equiv="Content-Type" ...

  3. Catch That Cow_bfs

    Catch That Cow 题目大意:FrammerJohn找奶牛,给出n和k.FJ在n处.每次他可以向左移动一格.向右移动一格或者移动到自己当前格子数乘2的地方.求FJ最少移动多少次.其中,FJ和 ...

  4. 深入理解Java对象的创建过程:类的初始化与实例化

    摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类 ...

  5. Oracle 琐表和查询谁在琐表并解决

    Oracle数据库操作中,我们有时会用到锁表查询以及解锁和kill进程等操作,那么这些操作是怎么实现的呢?本文我们主要就介绍一下这部分内容. (1)锁表查询的代码有以下的形式: select coun ...

  6. python读取txt、csv、xml

    读取txt,无需引入任何包: user_file = open('user_info.txt','r') lines = user_file.readlines() user_file.close() ...

  7. struct2_拦截器知识点.

    Struts2拦截器原理: Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个 ...

  8. 【Nginx系列】Nginx虚拟主机的配置核日志管理

    Nginx配置段 #user nobody; worker_processes 1;// 有1个工作的子进程,可以自行修改,但太大无益,因为要争夺CPU,一般设置为 CPU数*核数 #error_lo ...

  9. Beta第六天

    听说

  10. Alpha第八天

    Alpha第八天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...