前言:

理论的就不多说了,具体的架构看图。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. ava集合---HashSet的源码分析

    一.HasnSet概述 Hashset实现set接口,由哈希表(实际上是一个HashMap实例)支持.它不保证set的迭代顺序.特别是它不保证该顺序恒久不变.此类允许使用Null元素 一.HasnSe ...

  2. 发布利用 Qt Assistant来做帮助系统的程序遇到的问题

    最近,一直在做反演初始模型可视化建模的软件 model Constraint,最后的步骤就是利用 Qt Assistant为自己的程序制作帮助系统. 1.<Qt Creator快速入门>和 ...

  3. C#数组随机生成四个随机数

    int[] face = new int[4]; Random ra = new Random(); for (int i = 0; i < face.Length; i++) { int co ...

  4. 【备忘】Idea的那些事

    说到Java的IDE,似乎eclipse和Idea是目前的主流.然而,OO的课程组却一直在推荐使用eclipse,于是很多人就这样错过了Idea这样强大的IDE工具.本文将会对于Idea和Idea的一 ...

  5. Beta项目复审

    Beta项目复审 复审人:张宇光 所属团队:MyGod 团队成员:程环宇.王田路.张芷祎.张宇光.王婷婷 团队排名: SW_HW4-team团队 hyw-team团队 Java-Team团队 C++团 ...

  6. 1013团队Beta冲刺日志集合帖

    Beta预备 Beta冲刺day1 Beta冲刺day2 Beta冲刺day3 Beta冲刺day4 Beta冲刺day5 Beta冲刺day6 Beta冲刺day7 用户使用调查报告 Beta冲刺总 ...

  7. C语言--第14.15周作业

    一. 7-3 将数组中的数逆序存放 1.代码 #include 2<stdio.h> int main() { int a[10]; int i, n, s; scanf("%d ...

  8. 201621123068 Week04-面向对象设计与继承

    1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词 答:继承.多态.重载.关键字.父类与子类 1.2 尝试使用思维导图将这些关键词组织起来. 2. 书面作业 1. 面向对象设计(大 ...

  9. python的Virtualenv

    Virtualenv 虚拟的 Python 环境(简称 venv) 是一个能帮助你在本地目录安装不同版本的 Python 模块的 Python 环境,你可以不再需要在你系统中安装所有东西就能开发并测试 ...

  10. 自己写编程语言-m语言

    一直对技术有很强的兴趣,终于,决定要写自己的语言(m语言).那就先从最简单的开始:解释执行器. 一套完整的语言包含的肯定不止解释执行器了,还要有编译器和IDE,也就还要有语法高亮.智能提示等,不过还没 ...