部署上次的Hapi到Windows+Docker,WindowsDocker
前言:
理论的就不多说了,具体的架构看图。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的更多相关文章
- Windows Docker 部署 Spring Boot 项目
目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...
- Docker:四、Docker进阶 Windows Docker IIS 部署
前面的三篇docker 文档大家看的肯定不过瘾,自己可能也已经上手一试了...不知道有没有发现问题... 哈哈... 我来说说我遇到的问题哦 一.windows docker 镜像越来越大 默认的do ...
- 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)
经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...
- 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)
上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...
- 第一篇 Windows docker 概述
本人行业属于智能制造,偏向工厂应用,客户端程序全部是.Net 的 WinForm:本系统的后台是.Net,多系统交互的有java的:因系统发布效率问题,想采用docker Windows 的生产力环境 ...
- 解决 Windows Docker 安装 Gitlab Volume 权限问题
本文首发于我的个人博客,解决 Windows Docker 安装 Gitlab Volume 权限问题 ,欢迎访问! 记录一下 Windows10 下 Docker 安装 Gitlab 的步骤. Ca ...
- [第四篇]——Windows Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结
Windows Docker 安装 Docker 并非是一个通用的容器工具,它依赖于已存在并运行的 Linux 内核环境. Docker 实质上是在已经运行的 Linux 下制造了一个隔离的文件环境, ...
- 部署前后端为独立的 Docker 节点
在『服务器部署 Vue 和 Django 项目的全记录』一文中,介绍了在服务器中使用 Nginx 部署前后端项目的过程.然而,当 Web 应用流量增多时,需要考虑负载均衡.流量分发.容灾等情况,原生的 ...
- 【docker】docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志
如题: docker部署spring boot服务,但是docker logs查看容器输出控制台日志,没有日志打印,日志未打印,docker logs不打印容器日志 场景再现: docker部署并启动 ...
随机推荐
- 深入解析C语言数组和指针
概述 指针是C语言的重点,同时也是让初学者认为最难理解的部分.有人说它是C语言的灵魂,只有深入理解指针才能说理解了C语言.暂且撇开这些观点不谈.这章是我在阅读<C和指针>这本书的读书笔记. ...
- 在Anacoda中管理多个版本Python
win10. 在cmd窗口中输入 conda info --envs 或者 conda env list 查看已经安装的环境,当前活动的环境前会加*号. 在cmd窗口(终端窗口)或anaconda p ...
- Java基础笔记(7)----三个修饰符
abstract抽象 方法 抽象方法:abstract修饰的方法,只有声明 而没有方法的实现(连{}都没有). 语法:修饰符 返回值类型 方法名(形参列表); 注意:抽象方法 必须定义在 抽象类中. ...
- 关于php日期前置是否有0
例如:2018-01-04,这个日期和月份前置是有0 如果不想有0,date( 'y-n-j',time() ):默认的是date( 'y-m-d',time() ),这个日期和月份前置是有0. da ...
- 一个非常标准的连接Mysql数据库的示例代码
一.About Mysql 1.Mysql 优点 体积小.速度快.开放源码.免费 一般中小型网站的开发都选择 MySQL ,最流行的关系型数据库 LAMP / LNMP Linux作为操作系统 Apa ...
- 从零部署Spring boot项目到云服务器(正式部署)
上一篇文章总结了在Linux云服务器上部署Spring Boot项目的准备过程,包括环境的安装配置,项目的打包上传等. 链接在这里:http://www.cnblogs.com/Lovebugs/p/ ...
- linux,windows,ubuntu下git安装与使用
ubuntu下git安装与使用:首先应该检查本地是否已经安装了git ,如果没有安装的话,在命令模式下输入 sudo apt-get install git 进行安装 输入git命令查看安装状态及常用 ...
- beta冲刺6
前言:此篇是补昨天凌晨的.后面有更新但是太晚了就没有即使更新.所以现在过来更新一下. 昨天的未完成: 用户测试+测试报告 目前剩下的功能点:输入内容检测 我的社团输出显示格式调整. 今天的完成: 我的 ...
- B-day5
1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:昨天虽然完成了风险数据的图表统计,但是界面风格仍然不太满意,还在抓紧调试中:还有登录页的背景图,在想应该如何设计, 什么样的风格才好. ...
- linux 下 nc 命令的使用
netcat被誉为网络安全界的'瑞士军刀',一个简单而有用的工具,透过使用TCP或UDP协议的网络连接去读写数据.它被设计成一个稳定的后门工具,能够直接由其它程序和脚本轻松驱动.同时,它也是一个功能强 ...