linux安装docker部署java项目

大家好,我是烤鸭:

分享一下linux上部署docker的javaweb项目

 

1.环境

linux centos 7.2

64-bit 系统

kernel 3.10+

 查看版本号 :

uname -r

大于3.10即可

2.安装docker

这里是官网安装教程

https://docs.docker.com/engine/installation/linux/docker-ce/centos/

说一下docker ce 和ee版的区别,ce是社区版免费的,ee是企业版,收费的。

简述几个安装命令,一路打下来就好。

2.1.移除之前定的安装:

yum remove docker \docker-common \docker-selinux \docker-engine

2.2.设置仓库:

yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

2.3.安装docker-ce

yum install docker-ce


2.4.启动docker

systemctl start docker

2.5.运行hello-world镜像

docker run hello-world

成功如下图:



3.docker安装成功了,我选择的是官网拉取一个centos镜像

这里是官网的商店,可以找你想要的镜像。

https://store.docker.com/search?offering=community&type=edition

https://store.docker.com/images/centos

其实要的就是这个命令:

docker pull centos

拉取到了centos的镜像,我们用镜像启动容器。

4.镜像创建与容器启动

4.1查看镜像

docker images


4.2用镜像启动容器

docker run -i -t -v /download/:/usr/my/docker/download/ 3fa822599e10 /bin/bash
其中,相关参数包括:  
-i:表示以“交互模式”运行容器  
-t:表示容器启动后会进入其命令行  
-v:表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

说一下downlaod和/usr/my/docker/download/

前者表示你把东西放在你服务器的download/文件夹下,在进入容器的时候,文件会相应地映射到/usr/my/docker/download/这个文件夹下。

/bin/bash表示启动后进入命令行,crtl+d或者exit退出。

如果这一步出现:Permission denied,参考这篇大神的文章:http://blog.csdn.net/rznice/article/details/52170085

查看容器:

docker ps -a

4.3重新进入容器

首先启动容器:

docker start c806a68d2409

进入容器:

docker attach c806a68d2409

5.java环境安装

5.1将jdk的tar包和tomcat的tar包放到/download/文件下

如图所示:

5.2 这时候进入容器指定目录,我的是/usr/mmy/就能找找到这两个jar包,解压和配置环境变量。

5.3解压jdk和tomcat的tar包

cd /usr/my  
mkdir jdk  
mkdir tomcat
cd /usr/my/docker/download/  
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /usr/my/jdk 
tar -zxvf apache-tomcat-9.0.0.M26.tar.gz -C /usr/my/tomcatmv apache-tomcat-9.0.0.M26 tomcat_test

5.4配置环境变量

这里我没有配置jdk的环境变量,因为不需要,当然也可以配置。

vi /etc/profile  

G-到最后一行,o-新换行开始。最后一行加上:

#set java environment   
export JAVA_HOME=/usr/my/jdk/jdk1.8.0_144  
export JRE_HOME=$JAVA_HOME/jre   
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH   
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH 

保存后 执行生效:

source /etc/profile   

查看java版本:

5.5配置tomcat

进入tomcat的bin目录下

cd /usr/my/tomcat/tomcat_test/bin
vi setclasspath.sh 
vi setclasspath.sh 

最后添加:

export JAVA_HOME=/usr/my/jdk/jdk1.8.0_144 
export JRE_HOME=$JAVA_HOME/jre

保存后,启动tomcat。

./startup.sh


6.配置容器启动环境变量

之所以前面说jdk的环境变量可以不配置,因为容器启动重新加载单独的配置文件。

6.1设置环境变量

vi ~/.bashrc

文件最后加上:

#set java environment   
export JAVA_HOME=/usr/my/jdk/jdk1.8.0_144  
export JRE_HOME=$JAVA_HOME/jre   
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH   
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH 

生效:

source ~/.bashrc 

6.2编写运行脚本

vi /root/run.sh

脚本内容如下:

#!/bin/bash  
source ~/.bashrc  
sh /usr/my/tomcat/tomcat_test/bin/catalina.sh run 

千万不要忘记给脚本加权限

chmod u+x /root/run.sh 

这时候容器内部的准备工作就完了。退出容器。

7.创建web镜像

查找容器:

docker ps -a

创建镜像:

docker commit c806a68d2409 test_web:1.0 

启动镜像:

docker run -d -p 8999:8080 --name  test test_web:1.0 /root/run.sh


-d:表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上。  
-p:表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 8999端口,这样就向外界暴露了 8999端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。  
--name:表示容器名称,用一个有意义的名称命名即可。

查看镜像:

docker ps

如果能查到,说明启动成功了。

最后附上一张访问成功的图(8999端口):


部分内容来自:

http://blog.csdn.net/evankaka/article/details/50722788

8.问题:

另外说一下出现的问题:

8.1.如果出现类似bash:vi:或者cd或者ps等常用命令

command not find
检查一下/etc/profile下,是不是新配的环境变量有问题。

vi命令不好用的话:

在命令行中输入:export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/usr/X11R6/bin  这样可以保证命令行命令暂时可以使用。
8.2.如果出现容器启动没反应,docker ps 找不到内容,但是启动没报错

估计是脚本启动失败,原因不太清楚。

可以试着把/etc/profile文件还原,再尝试下。

毕竟启动容器不需要改/etc/profile这个文件,有单独的文件~/.bashrc配置环境变量就可以了。
 




 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试题谷歌插件

该插件可以让您在做WEB开发的同时&#xff0c;也可以去学习一些理论知识&#xff0c;加深你的技术。 随机题&#xff1a;每次点开插件&#xff0c;从题库中随机筛选出的题 当前题&#xff1a;是桌面通知的题目&#xff0c;每三分钟随机发送一次桌面通知 追加题&#xff1a;向…

Apache Curator之分布式锁原理(二)

本文主要讲解如下内容&#xff1a; 为什么要使用分布式锁&#xff1f;分布式锁特性&#xff01;分布式锁的实现方式有哪些&#xff1f;Curator分布式锁原理Curator分布式锁实现类UML及相关类的介绍基于Redis&#xff0c;数据库实现分布式锁为什么要使用分布式锁&#xff1f; 在…

阿里云服务器发送邮件失败?连接超时?25端口被封?

大家好&#xff0c;我是烤鸭&#xff1a; 之前用阿里云服务器的时候发送126企业邮箱&#xff0c;用的smtp方式&#xff0c;但是一直超时。百思不得其解。因为在本地环境是可以的。 原来是阿里云服务器限制了25端口。问了126邮箱那边的技术客服&#xff0c;只支持25端口。 问了…

springboot版的微信公众号,订阅号

大家好&#xff0c;我是烤鸭&#xff1a; 这是一篇微信公众号入门的文章&#xff0c;如果是个人的话&#xff0c;只能申请未认证的订阅号。如果是公司的话&#xff0c;想申请啥都是可以的。 这篇文章说的就是个人订阅号。 环境: centos 7.3 springboot 1.5 需要&#xff…

Javascript报错Failed to execute ‘querySelectorAll‘ on ‘Document‘: ‘#123456‘ is not a valid sele

Javascript报错&#xff1a;Failed to execute ‘querySelectorAll’ on ‘Document’: ‘#123456’ is not a valid selector 解决方式(除开特殊符号,第一个字符必须是字母)&#xff1a; 第一种&#xff1a; 将ID前面加字母&#xff0c;例如&#xff1a;document.querySelect…

pycharm创建django项目linux部署

大家好&#xff0c;我是烤鸭&#xff1a; pytho部署web项目比java简单一点&#xff0c;虽然springboot内置了tomcat。 环境&#xff1a; pycharm专业版python3.6 1.安装python python下载&#xff1a;https://www.python.org/downloads/ 我使用的3.6版本 2.配置环境变量 path目…

利用Android Studio快速搭建App

大家好&#xff0c;我是烤鸭: 给大家分享一个简单的用Android Studio快速搭建app 工具&#xff1a;Android Studio 64位 专业版 插件:Datepicker Timepicker okhttp 实现需求&#xff1a;界面上选择时间&#xff0c;发get/post请求到后台&#xff0c;获取选择的时间。1.修改And…

springboot多环境加载yml和logback配置

大家好&#xff0c;我是烤鸭&#xff1a;这是一篇关于springboot多环境加载yml和logback配置文件。环境&#xff1a;开发工具 idea(推荐)/eclipse(对yml支持不好)jdk 1.8springboot 1.5.6.RELEASE 1. yml和logback文件1.1 结构,如图所示&#xff1a;1.2 application.yml (默…

汇编实验二

》实验结论 1.使用Debug将下面的程序写入内存&#xff0c;逐条执行&#xff08;见1-1&#xff09;&#xff0c;根据指令执行后的实际情况填空&#xff08;见1-2&#xff09; p.s. 已经按实验要求将使用 e 命令将内存单元 0021:0 ~0021:7 连续 8 个字节数据修改为 30H, 31H, 32H…

springboot中的拦截器interceptor和过滤器filter,多次获取request参数

大家好&#xff0c;我是烤鸭&#xff1a; 这是一篇关于springboot的拦截器(interceptor)和过滤器(Filter)。 先说一下过滤器和拦截器。区别&#xff1a;1. servlet请求&#xff0c;顺序&#xff1a;Filter ——> interceptor。2. Filter的作用是对所有进行过滤&#xff…

利用cookies跳过登陆验证码

前言在爬取某些网页时&#xff0c;登陆界面时经常遇到的一个坎&#xff0c;而现在大多数的网站在登陆时都会要求用户填写验证码。当然&#xff0c;我们可以设计一套机器学习的算法去破解验证码&#xff0c;然而&#xff0c;验证码的形式多种多样&#xff0c;稍微变一下&#xf…

[Swift]八大排序算法(八):基数排序

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号&#xff1a;山青咏芝&#xff08;shanqingyongzhi&#xff09;➤博客园地址&#xff1a;山青咏芝&#xff08;https://www.cnblogs.com/strengthen/ &#xff09;➤GitHub地址&…

推一波JAVA学习公众号

大家好&#xff0c;我是烤鸭&#xff0c;今天不水了。分享一波java学习公众号。从基础到架构都有&#xff0c;另外说一句&#xff0c;注意身体吧。另外说一句&#xff0c;本文不定时更新。1. JAVA思维导图2. 程序员小灰可爱的小仓鼠3. 码农每日一题4. JAVA后端技…

二叉树的三种遍历(递归与非递归) + 层次遍历

<转载于 >>> > 二叉树是一种非常重要的数据结构&#xff0c;很多其他数据机构都是基于二叉树的基础演变过来的。二叉树有前、中、后三种遍历方式&#xff0c;因为树的本身就是用递归定义的&#xff0c;因此采用递归的方法实现三种遍历&#xff0c;不仅代码简洁…

springboot使用mongodb

大家好&#xff0c;我是烤鸭&#xff1a;这是一篇关于springboot项目中使用mongodb。 环境&#xff1a;jdk 1.8springboot 1.5.6.RELEASEmaven 3.5 1. mongodb在springboot中的配置springboot集成这个三方插件就是简单&#xff0c;只需要引入依赖&#xff0c;在properties或者…

eclipse搜索框太小

解决方式&#xff1a; Window>Preferences>DevStyle>Inline Search 把 use the inline search 取消勾选

fileinput 加 ftp 加 nginx 加 SpringBoot上传文件

亲测可用 准备linux服务器 https://www.cnblogs.com/shuaifing/p/8268949.html 搭建ftp https://www.cnblogs.com/shuaifing/p/8260532.html Springboot整合fileinput 上传文件https://www.cnblogs.com/shuaifing/p/8274906.html 页面 引入 jquery boostrap fileinput.min.js…

Centos7安装Hadoop教程

一&#xff1a;安装SSH 1&#xff0c;执行下面的命令安装ssh yum install openssh-clients yum install openssh-server 2&#xff0c;执行如下命令测试一下 SSH 是否可用&#xff08;SSH首次登陆提示 yes/no 信息&#xff0c;输入 yes 即可&#xff0c;然后按照提示输入 root…

elasticsearch 6.x (一) 部署 windows入门 spingboot连接

大家好&#xff0c;我是烤鸭&#xff1a;今天分享的是 elasticsearch 6.x 部署 windows服务器。环境&#xff1a;win10elasticsearch-6.2.4springboot 2.0.0.RELEASE1. 官网下载elasticsearch这个是最新版本的es下载地址。https://www.elastic.co/downloads/elasticsearch选择z…

Programming Assignment 5: Burrows–Wheeler Data Compression

Programming Assignment 5: Burrows–Wheeler Data Compression 1. 题目阅读 实现Burrows-Wheeler数据压缩算法。这个革命性的算法产生了gzip和pkzip&#xff0c;并且相对容易实现&#xff0c;还不受任何专利保护。它构成了unix压缩实用程序bzip2的基础。 这个算法由以下三种算…