因为一些原因,接触到了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. 手动卸载wine-stable卸载

    装了wine发现运行TIM全都乱码,于是手动卸载wine: 删除文件:(参考https://blog.csdn.net/taizhoufox/article/details/5496568) ~/.w ...

  2. 基于spark logicplan的表血缘关系解析实现

    随着公司平台用户数量与表数量的不断增多,各种表之间的数据流向也变得更加复杂,特别是某个任务中会对源表读取并进行一系列复杂的变换后又生成新的数据表,因此需要一套表血缘关系解析机制能清晰地解析出每个任务所 ...

  3. 使用poi解决导出excel内下拉框枚举项较多的问题

    废话少说,直接上代码: package com.fst.attachment.controller; import java.io.FileOutputStream; import org.apach ...

  4. 004-行为型-10-中介者模式(Mediator)

    一.概述 在Mediator模式中,类之间的交互行为被统一放在Mediator的对象中,对象通过Mediator对象同其他对象交互,Mediator对象起着控制器的作用. 用一个中介对象来封装一系列的 ...

  5. datax实例——全量、增量同步

    一.全量同步 本文以mysql -> mysql为示例: 本次测试的表为mysql的系统库-sakila中的actor表,由于不支持目的端自动建表,此处预先建立目的表: CREATE TABLE ...

  6. 【444】Data Analysis (shp, arcpy)

      ABS suburbs data of AUS 1. Dissolve Merge polygons with the same attribute of "SA2_NAME16&quo ...

  7. Spring Cloud 如何使用Eureka注册服务 4.2.2

    要使用Eureka实现服务发现,需要项目中包含Eureka的服务端发现组件以及客户端发现组件. 搭建Maven父工程 创建一个Maven父工程xcservice-springcloud,并在工程的po ...

  8. mybatis查询mysql数据库tinyint(1)变为boolean类型

    mybatis查询mysql数据库对象转化为Map,tinyint(1)被转化为boolean类型,可以t通过避免使用tinyint(1)来解决.

  9. kafka如果有多个patition,消费消息的时候消息是没有顺序的

    创建一个2个分区,3个副本的topic,名字叫first kafka-topics.sh  --create --zookeeper datanode1:2181 --partitions 2 --r ...

  10. 关于css清除元素浮动的方法总结(overflow clear floatfix)

    在前两天的一个面试中考官问我web中清除浮动的一些css常用方法,我很轻松的答出了: 1.overflow:hidden 2.clear:both 3.floatfix类 然后问题就来了,考官接着问' ...