因为一些原因,接触到了docker,经过一番研究,总算是有了一些自己的看法,有什么不对的地方,希望多多指教。

废话不多说,首先我这里使用的虚拟机安装的是ubuntu16.04版本,其他版本应该也可以。

当初在学习时查了很多资料,也看了很多同仁的博客,参考了https://blog.csdn.net/WANTED_Shanks/article/details/79815022 的内容,他做的是centos 7 版的,有很多共通之处;

一.Ubuntu 16.04 安装 Docker

1.选择国内的云服务商,这里选择阿里云为例

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

2.安装所需要的包

sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

3.添加使用 HTTPS 传输的软件包以及 CA 证书

sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates

4.添加GPG密钥

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

5.添加软件源

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

6.添加成功后更新软件包缓存

sudo apt-get update

7.安装docker

sudo apt-get install docker-engine

8.启动 docker

sudo systemctl enable docker
sudo systemctl start docker
二.docker 部署一个简单的javaweb项目:
    部署一个javaweb项目,我们需要两个镜像,tomcat,mysql
  1.下载tomcat镜像
    首先查找tomcat镜像   docker search tomcat

  2.我们选择第一个下载即可拉取镜像  docker pull tomcat

  3.参照拉取tomcat镜像的方法拉取mysql镜像

  

  4.启动mysql镜像:
      因为docker容器,关闭,重启后,会清空容器里面的数据,所有我们用挂载的方式启动mysql,保存数据库数据
   现在ubuntu主机上创建一个文件夹 /usr/mysql_data  
   挂载启动mysql镜像:docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456-v /usr/mysql_data:/var/lib/mysql  -d mysql
  注: --name:给容器取一个别名为mysql
    -p:映射端口号,将mysql的端口号3306映射为3306
    -e: MYSQL_ROOT_PASSWORD:设置root密码为123456
    -v:使用/usr/mysql_data挂载mysql数据文件,保存数据库数据
    -d:后台运行容器,并返回容器ID
    mysql:镜像名称   可使用docker images查看所有镜像:

    使用docker ps 查看正在运行的容器:

  5.现在可以通过windows上的数据库图形化管理工具,连接测试mysql

    这里的ip地址为vm中ubuntu的ip地址,密码为启动mysql时,设置的密码。然后就可以在windows桌面进行mysql的数据库创建。

  6.使用Dockerfile构建自己的docker镜像 

    修改web项目的数据库连接信息,将ip信息改为我们启动mysql容器时取的别名,改好,打成war包  这一点很关键容易搞错

     

       对比之前我们在javaweb中连接数据库的写法       jdbc:mysql://localhost:3306/test

    

      修改完成之后,将这个javaweb项目打成war包,在ubuntu系统中新建一个文件夹,将war包放入其中,

      再在当前文件夹下创建一个Dockerfile 文档  在其中写入

      from tomcat

      COPY  sushe.war   /usr/local/tomcat/webapps

      保存退出。

      

    

  7.依然在当前目录下执行命令     使用docker build生成镜像:
          docker build -t sushe:latest .
      注:-t :设置repository,tag
     . :运行当前文件夹下的Dockerfile文件

    查看生成的镜像

  8.启动sushe镜像:

    

     docker run -d -p 8888:8080 --name fbm --link mysql:docker eaf2d687d1d3
        注:--link:tomcat容器与msyql容器简历连接,mysql为启动mysql容器时取的别名,docker为建立连接的连接名
               eaf2d687d1d3 为sushe镜像的image id

      再放一遍图

      mysql为启动mysql容器时取的别名

      docker为建立连接的连接名

    最后测试一下

    测试数据库输入账号密码

      

      登录成功,部署完毕

    在部署过程中,肯定会有很多问题,有时候虽然在本机上运行的没问题,可是打包上传之后就出了错。

    所以我们可以用  docker logs tomcat  查看日志信息。

    

ubuntu16.04环境下在docker上部署javaweb项目简单案例的更多相关文章

  1. Linux环境下在Tomcat上部署JavaWeb工程

    本文讲解如何将我们已经编译好的JavaWeb工程在Linux环境下的Tomcat上进行部署,总体上的思路是和Windows下JavaWeb项目部署到tomcat差不多,具体步骤和命令如下. 注:部署之 ...

  2. Ubuntu16.04环境下搭建基于三台主机的mysql galera cluster集群(实测有效)

    (注意: (1)文中红色字体部分不一定需要操作 (2)由于word文档编辑的原因,实际操作时部分命令需要手动输入!!直接复制粘贴会提示错误!! ) 一  搭建环境: 1 Ubuntu16.04版本(系 ...

  3. Ubuntu16.04环境下的硬盘挂载

    需求:在Ubuntu16.04系统下,挂载一个新的硬盘 第一步:查看目前已经存在的分区的状态 命令:df -l 如上图所示,并未看到要挂载的硬盘(sda)的状态. 第二步:查看计算机硬盘的状态(包括格 ...

  4. faster-rcnn在ubuntu16.04环境下的超级详细的配置(转)

    首先,下载好必须要的安装包.为了方便,我已经全部上传在了百度云. - ubuntu16.04系统 链接:http://pan.baidu.com/s/1geU8piz 密码:25mk - cuda8. ...

  5. mac和linux下使用Docker,部署SpringBoot项目到docker

    主要是看一下如何在linux及mac上安装docker,创建docker镜像,部署SpringBoot项目到docker,并借助于DaoCloud进行docker镜像下载加速等. 我用的电脑是mac, ...

  6. 在腾讯云&阿里云上部署JavaWeb项目(Tomcat+MySQL)

    之前做项目都是在本地跑,最近遇到需要在在云服务器(阿里云或者腾讯云都可以,差不多)上部署Java Web项目的问题,一路上遇到了好多坑,在成功部署上去之后写一下部署的步骤与过程,一是帮助自己总结记忆, ...

  7. Docker实战部署JavaWeb项目-基于SpringBoot

    最近在滴滴云上看到服务器很便宜,1核2G,1年只需要68块钱.下面是我基于Docker部署Javaweb服务的过程.目前我见过的最便宜的服务器,阿里云打折的时候都没有这么便宜啊,果断入手.有需要的话可 ...

  8. docker实战部署Javaweb项目

    一.部署环境说明 docker服务版本:version 18.09.0nginx服务版本:version: nginx/1.15.10redis服务版本:version: redis/5.0.3tom ...

  9. ubuntu14.04环境下利用docker搭建solrCloud集群

    在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器 ...

随机推荐

  1. Linux 服务器远程管理

    一.Linux 常用远程管理工具 点击下载 二.查看服务器 ip 地址命令 1.通过 ip addr 查看网卡 ip 地址 ip addr 2.通过 ifconfig 查看网卡 ip 地址 最小化安装 ...

  2. OMPL 在windows下的安装

    博客参考:https://blog.csdn.net/shitanding/article/details/82562702 和 https://bitbucket.org/ompl/omplapp/ ...

  3. osg::Node clone

    深度拷贝 node.clone(osg::CopyOp::DEEP_COPY_ALL)  osg::ref_ptr<osg::Node> deepnode = (osg::Node *)( ...

  4. 使用 evo 工具评测 VI ORB SLAM2 在 EuRoC 上的结果

    http://www.liuxiao.org/2017/11/%E4%BD%BF%E7%94%A8-evo-%E5%B7%A5%E5%85%B7%E8%AF%84%E6%B5%8B-vi-orb-sl ...

  5. 零基础学Python-第二章 :Python基础语法-05.基础数据类型

    打开终端,输入python3,这就进入了python的命令提示符. 输入type(8),返回的是int类型.用来type来判断当前的是什么类型. 字符串8转int类型. 数字123转字符串 布尔类型的 ...

  6. 【Redis】Redis 主从模式搭建

    主从模式介绍 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据 ...

  7. 【DataBase】H2 DateBase的简单使用

    H2介绍 H2是一个开源的嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时H2提供了一个十分方便的web控制台用于操作和管理数据库内容. H2还提供兼容模式,可以兼容一些主流的数据库,因此 ...

  8. 基于Source Insight_Scan的C/C++静态代码检查工具安装说明

    基于Source Insight_Scan的C/C++静态代码检查工具安装说明   本文链接:https://blog.csdn.net/M19930517/article/details/79977 ...

  9. Docker容器(四)——常用命令

    (1).基本使用方法 查看所有镜像.docker images [root@youxi1 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ...

  10. JS语言中的JSON.parse()和JSON.stringify()

    parse()用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":& ...