add:docker部署java
This commit is contained in:
parent
804a98f6d8
commit
3e57990f56
@ -1,10 +1,10 @@
|
||||
---
|
||||
id="2018-11-20-10-38-05"
|
||||
title="linux下mongodb的配置与安装"
|
||||
title="1.linux下mongodb的配置与安装"
|
||||
headWord="linux下docker的安装与配置"
|
||||
tags=["docker", "linux","ubuntu"]
|
||||
category="linux"
|
||||
serie="软件相关"
|
||||
serie="docker教程"
|
||||
---
|
||||
|
||||
# 一、安装
|
@ -1,10 +1,10 @@
|
||||
---
|
||||
id="2018-12-26-13-18"
|
||||
title="docker简单使用教程"
|
||||
headWord="报错是这么产生的,使用装有mysql的镜像创业一个容器,然后在容器中启动mysql就会报错,启动失败。"
|
||||
title="2.docker简单使用教程"
|
||||
headWord="本篇用来记录一些在docker中经常用到的命令,慢慢补充中。"
|
||||
tags=["docker","mysql"]
|
||||
category="linux"
|
||||
serie="软件相关"
|
||||
serie="docker教程"
|
||||
---
|
||||
|
||||
### 1、镜像操作
|
||||
@ -41,7 +41,7 @@ docker pull name:tag
|
||||
docker save name:tag/id > /home/image-save.tar
|
||||
|
||||
# 加载镜像文件到docker中
|
||||
docker load /home/image-save.tar
|
||||
docker load -i /home/image-save.tar
|
||||
```
|
||||
|
||||
#### 6. 查看镜像创建历史
|
||||
@ -64,14 +64,16 @@ docker commit -m "提交信息" -a "作者信息" 容器id/容器名 镜像名:
|
||||
#### 1.通过镜像创建容器
|
||||
|
||||
```bash
|
||||
docker run -itd -p 3306:3306 -p 9200:9200 --name oms_env oms_env:0.6
|
||||
docker run -itd -p 3306:3306 -p 9200:9200 -w /home --name oms_env oms_env:0.6
|
||||
|
||||
# 参数说明
|
||||
-i 让容器的标准输入 通常it配合使用
|
||||
-t docker分配一个伪终端并绑定到容器的标准输入上
|
||||
-d 容器后台运行
|
||||
-p 小写p,hostPort:ContainerPort 绑定容器端口到当前主机端口
|
||||
-P 大写P,docker随机映射一个端口到容器内部开放的网络端口
|
||||
-i #让容器的标准输入 通常it配合使用
|
||||
-t #docker分配一个伪终端并绑定到容器的标准输入上
|
||||
-d #容器后台运行
|
||||
-p 8080:80 #小写p,hostPort:ContainerPort 绑定容器端口到当前主机端口
|
||||
-P #大写P,docker随机映射一个端口到容器内部开放的网络端口
|
||||
-w #指定容器工作空间
|
||||
--bind 容器名[:容器别名] #容器链接
|
||||
```
|
||||
|
||||
#### 2.保存容器到文件/恢复文件到容器
|
||||
@ -80,6 +82,7 @@ docker run -itd -p 3306:3306 -p 9200:9200 --name oms_env oms_env:0.6
|
||||
# 保存容器到文件
|
||||
docker export 容器名/容器id > /home/container_export.tar
|
||||
|
||||
#从文件恢复容器
|
||||
docker import < /home/container_export.tar
|
||||
```
|
||||
|
93
linux/docker/3.docker部署java应用.md
Normal file
93
linux/docker/3.docker部署java应用.md
Normal file
@ -0,0 +1,93 @@
|
||||
---
|
||||
id="2019-02-01-14-05"
|
||||
title="3.从零开始在docker中部署java应用"
|
||||
headWord="在没有docker之前,发布项目,测试项目都是一件非常头疼的,你可能经常会听到这样的话,'测试:过几天要测试了,过来搭个测试环境。一顿操作后。测试提bug,开发"
|
||||
tags=["docker","springboot","jar","war","elastricsearch","activemq"]
|
||||
category="linux"
|
||||
serie="docker教程"
|
||||
---
|
||||
|
||||
# 前言
|
||||
|
||||
  在没有 docker 前,项目转测试是比较麻烦的一件事。首先会化较长的时间搭建测试环境,然后在测试过程中又经常出现测试说是 bug,开发说无法复现的情况,导致撕逼。
|
||||
|
||||
  本篇记录了如何将一个 java 应用部署到 docker 中。主要讲述了以下几个部分:
|
||||
|
||||
- docker 部署 mysql
|
||||
- docker 部署 activemq
|
||||
- docker 部署 elastricsearch 集群
|
||||
- docker 部署 java 应用
|
||||
- docker 部署 nginx 作为静态服务器,及代理服务器
|
||||
|
||||
项目架构如下:
|
||||
|
||||
![项目架构](https://raw.githubusercontent.com/FleyX/files/master/blogImg/linux/docker/20190201151250.png)
|
||||
|
||||
本系统中有三个主要模块 OMS,DAS 和一个 Eureka 注册中心。其中 OMS 和 DAS 使用有 activemq 消息队列,来进行大量数据的交互然后各自使用一个 mysql 数据库存储主要的业务数据。使用 elastricsearch 存储超大量的数据。
|
||||
|
||||
## 传统软件部署和 docker 部署
|
||||
|
||||
  本项目在 windows 部署时是将其作为三个部分来进行安装的--ENV 环境包(保护 mysql,es 等),OMS 产品包,DAS 产品包。所以最初我的设想是一个容器中装 ENV 环境包所需的所有软件,一个容器装 DAS,一个容器装 OMS。然后再实践的过程中越来越感觉不对劲,环境配置比较复杂,而且也有种把容器当虚拟机用的感觉,一点没有简化的感觉。
|
||||
|
||||
  遂停下了操作,开始学习一波 docker 到底是怎么用的。用租房子来做比喻:
|
||||
|
||||
- 传统软件部署方式相当于租到一个零家具,零装修的房子。我们想要住进去首先必须买齐必要的家具,然后想要住的舒心呢,还得花功夫装饰装饰,让房子好看点。这样就会对这个具体的房子产生较强的依赖,很难迁移到另一个房子中(想想那么多的家具,家电,杂物。。)。如果全部放弃重新换一个房子代价又太大了。
|
||||
|
||||
![搬家](https://raw.githubusercontent.com/FleyX/files/master/blogImg/linux/docker/20190201161044.png)
|
||||
|
||||
- 使用 docker 相当于租到一个全家电,精装修的房子。我们只需带上自己的个人物品即可开始入住。想要换一个房子也是轻而易举,带上自己的东西麻溜的就换了。
|
||||
|
||||
![轻松搬家](https://raw.githubusercontent.com/FleyX/files/master/blogImg/linux/docker/20190201161301.png)
|
||||
|
||||
  使用 docker 推荐操作是一个进程放到一个容器中,做到更好的隔离性,同时也更容易进行管理。下面来使用容器技术部署我们应用。还是分为三部分,但是每个进程使用一个容器,做到 0 配置启动容器。
|
||||
|
||||
# 实战
|
||||
|
||||
  在此默认已经会安装 docker,且了解基本操作。如不了解的先看这两篇:[安装](http://tapme.top/blog/detail/2018-11-20-10-38-05),[基本使用](http://tapme.top/blog/detail/2018-12-26-13-18)
|
||||
|
||||
## 部署 ENV 环境包
|
||||
|
||||
  环境包中诸如 elastricsearch,mysql 这样的数据存储工具,需要满足如下两个要求:
|
||||
|
||||
1. 保留数据,不论容器如何创建、销毁,数据不能丢。
|
||||
2. 需要使用个性化的配置文件,每次启动根据该配置文件来启动。
|
||||
|
||||
### 部署 mysql
|
||||
|
||||
  曾经最初的时候在 linux 上手动装一个 mysql 能花上半天的时间,而且还不会进行数据迁移,感觉 mysql 能如此如此快速的查询大量数据很强大。。现在我已然能够熟练的掌握 mysql 安装、卸载。
|
||||
|
||||
  使用容器部署 mysql 过程如下:
|
||||
|
||||
1. 首先从 docker.hub 中根据各自的需求 pull 对应的 mysql 镜像
|
||||
|
||||
```bash
|
||||
docker pull mysql:5.7.24
|
||||
```
|
||||
|
||||
2. 启动镜像
|
||||
|
||||
  由于 mysql 是用来存数据的,数据无论什么情况都不能丢失,所以数据存在容器外部,通过映射操作,映射到容器内部,参数如下:
|
||||
|
||||
```bash
|
||||
# 将宿主机的路径,映射到容器内部。这个路径既可以是文件夹,也可以是文件
|
||||
-v hostPath/containerPath
|
||||
```
|
||||
|
||||
显然我们通过这个桉树将外部的数据文件夹,配置文件映射到容器中。最后启动这个容器的命令如下:
|
||||
|
||||
```bash
|
||||
docker run --name=mysql -itd -p 3308:3306 -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone -v /opt/mysql/data:/var/lib/myql -v /opt/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.25
|
||||
```
|
||||
|
||||
**注意:如果 mysql 版本为 8.x,还需要映射/var/lib/mysql-files 目录,否则启动报错**
|
||||
|
||||
下面介绍具体参数含义:
|
||||
|
||||
- -it 标准输入输出有关
|
||||
- -d 后台启动
|
||||
- -v 文件映射
|
||||
- -e 设置环境变量到容器中
|
||||
|
||||
  可能你们会问为什么要映射`/etc/timezone`和`/etc/timezone`,这是为了让容器的时间和时区与宿主机保持一致。默认情况下容器为 UTC 标准时间。`/etc/timezone`让容器时间,时区和宿主机一致。但是如果不映射`/etc/timezone`java 应用中的时区还是错的,虽然使用`date -R`命令查看时间和时区都正常。
|
||||
|
||||
### 部署elastricsearch容器
|
1
linux/docker/项目架构.xml
Normal file
1
linux/docker/项目架构.xml
Normal file
@ -0,0 +1 @@
|
||||
<mxfile modified="2019-02-01T07:12:10.855Z" host="www.draw.io" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/9.3.1 Chrome/66.0.3359.181 Electron/3.0.6 Safari/537.36" etag="osXRt6r7vfWJFf-NuW-r" version="10.1.6-4" type="device"><diagram id="YVIkU4cGaUGhXM6MBXF9" name="第 1 页">5ZlPV6MwEMA/TY7uAwIIx9Lieljfuq+H1WOECLjQYAiW+uk3lABNY/tapcV1Lz5m8m/4zUxmKgBOs+o7RXl8Q0KcAkMLKwBnwDBcqPG/tWLVKGzLaBQRTcJGpfeKefKKhVKsi8okxIU0kRGSsiSXlQFZLHDAJB2ilCzlaY8klU/NUYQVxTxAqar9nYQsbrQQalo/cI2TKBZH8yG3GclQO1tMLWIUkuWGCvoATikhrHnKqilOa3gtmGbd1Y7RzjKKF+yQBa+vODUeb5fuczX9dQ21yrXuLnSxTcFW7SvjkBMQIqEsJhFZoNTvtV5Q0hdc76pzgZJyEa4ljUsxy1IxwM2iqzuhXwv3tfDNasVZtTk4WwnpCTO2EpGASka4qjfjByG52L8xvLZ2J5D25UhJA7yPgogsRCPM9sxzOrfxeMckw9xuvo7iFLHkRbYDiciLunm9b/iDcM8xroInc9UnRm6Oitw6Q3b0CXG/OfbvZQcc1VXO/5gd+uWozJt9X1BaipN+3syBbwN3CpwZ8C3gTMBErTAbbMUOmDJc7aemvqRYYFyKAitaDMMS8rIv2HrbT8QbtbqdNzgX9x2hePRFoQ10UUg5MGAIGweGsDVqBBtf6dY4FPlH2xix9JYk3MIuDy1TzkMIt/KrsUus2nJcZ8YHfGl/OV8O7iPTkX2km2f20XuuxmF99N77dIQ8/XB135GomhwE5nYhPHEQGErbMJucv22wnM/WNkCFi19S/AfVaDwIJs4ajQ2cKfBN4DlgsoblXQFH/Wk4LCzTkGG5Y7MyFVYkKy6yVfHMl9opP957oPwpYh2A0zWgliUXvtHpWAqdEI1Fx7a0T0bHUeigoL5Os+ezwzGNrdDRxobTJvoGHYVBxItwvvPtxb9i0UM7XTuWCtwuUI5KBTpvUNG1U2FpSvEWFjVYhtHgAvgucL36svcvgeeDiXlAaMqt0TJOGJ7naN2JLCnK5XbpoODdEyGq88Zzjq34hjdIBaNJUGBEg1g/QV4fhaZtOeRkN8bOdTWmZW5vhvgI3LqvQacHx8X+i0zT8PbftaD/Fw==</diagram></mxfile>
|
Loading…
x
Reference in New Issue
Block a user