docker发布javaweb项目、极速部署mysql和redis

一、介绍

1.什么是Docker?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
官网:https://www.docker.com
文档:https://docs.docker.com/
仓库:https://hub.docker.com

2.Docker的基本组成

镜像(image):

docker镜像好比一个模板,可以通过这个模板来创建容器服务,通过这个镜像可以创建多个容器(服务运行或者项目运行就在容器中)

容器(contaioner):

Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建
启动,停止,删除,基本命令
目前可以把这个容器理解为就是一个简易的linux系统

仓库(respository):

仓库就是存放镜像的地方
仓库分为公有仓库和私有仓库
Docker Hub(默认是国外的)
阿里云都有容器服务器(配置镜像加速)

二、场景应用

使用Docker来部署项目或者拉取项目时,先要理解相关的命令
命令文档:https://docs.docker.com/engine/reference/commandline/

部署javaWeb项目

war包基本架构:
jsp文件和web.xml配置文件
在这里插入图片描述
在这里插入图片描述
jsp文件简单编写:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
	<meta http-equip="Content-Type" content="text/html"; charset=UTF-8">
	<title>Inset title here</title>
	</head>
	<body>
		 ----welcome----
		 <!--输出页面-->
		<H1>hello springmvc~</H1>
		<!--输出控制台-->
		<% System.out.println("=====docker tomcat self");%>
	</body>
</html>

web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

         <display-name>test</display-name>

</web-app>

手动创建tomcatDockerfile(默认名)文件,用于创建镜像

FROM centos
MAINTAINER fyp<fyp010311@163.com>
COPY c.txt /usr/local/cincontainer.txt
ADD jdk-8u281-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.48.tar.gz /usr/local/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_281
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.48
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.48
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
# ENTRYPOINT ["/usr/local/apache-tomcat-9.0.48/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-9.0.48/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.48/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.48/bin/logs/catalina.out

jdktomcat压缩包放在Dockerfile同一目录下,即相对路径相同
在这里插入图片描述
开启docker服务

[root@localhost]$ systemctl start docker

使用该Dockfile文件来创建镜像,前提是当前目录有该文件

[root@localhost]$ docker build -t fyptomcat9 .

创建成功后,查看镜像

[root@localhost]$ docker images

镜像名为第二条命令-t 后面附带的名字,接着就可以运行该镜像,实例化成容器

[root@localhost]$ docker run -d -p 9080:8080 --name myt9  --privileged=true \
 -v /mydocker/tomcat9/test:/usr/local/apache-tomcat-9.0.48/webapps/test \
 -v /mydocker/tomcat9/tomcat9logs:/usr/local/apache-tomcat-9.0.48/logs \
 fyptomcat9

项目结果截图:
在这里插入图片描述

简易安装常用数据库

安装mysql

先拉取镜像

[root@localhost]$ docker pull mysql:5.7.21

拉完后设置参数就可以运行了

[root@localhost]$ docker run -p 12345:3306 --name mysql \
-v /myDocker/mysql/conf:/etc/mysql/conf.d \
-v /myDocker/mysql/logs:/logs \
-v /myDocker/mysql/data:/var/lib/mysql/ \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.21

参数说明:
在这里插入图片描述

进入终端

[root@localhost]$ docker exec -it MySQL运行成功后的容器ID /bin/bash

登录mysql

[root@localhost]$ mysql -h 127.0.0.1 -P 3306 -u root

测试mysql

SQL> show databases;

疑问解答:
运行的镜像是从hub上拉取的,封装了许多环境,如下图暴露默认的ip和端口,指定了默认的mysql安装位置为数据卷,即共享目录,达到同步的目的
在这里插入图片描述

安装redis

第一步首先从docker hub上拉取redis

[root@localhost]$ docker pull redis

再运行该镜像

[root@localhost]$ docker run -p 6379:6379 -v /myDocker/myredis/data:/data \
-v /myDocker/myredis/conf/redis.conf/:/usr/local/etc/redis/redis.conf \
-d redis \
redis-server /usr/local/etc/redis/redis.conf \
--appendonly yes

登录到redis-cli

[root@localhost]$ docker exec -it 21ec78e0235e redis-cli

疑问解决:

为什么要把持久化目录放到/data下?
因为从hub上拉取的镜像是经过包装过的,是带有环境的
在这里插入图片描述
该镜像运行后的工作路径即当前目录为/data
会在该目录生成 dump.rdb和appendonly.aof
为什么会在当前目录?看配置文件redis.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

默认appendonly.aof是不会开启的,但运行镜像时添加了参数--appendonly yes,会更改这个属性
更多dockerFile官网文件可看:
https://github.com/docker-library/redis/blob/af431c381c3718dbe4d87572f7d3c330a063df8d/6.2/Dockerfile

参考链接:
Docker周阳的尚硅谷:https://www.bilibili.com/video/BV1Ls411n7mx?p=33&spm_id_from=pageDriver
百度百科、其他博客
docker官方文档:https://docs.docker.com/https://hub.docker.com

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
你可以使用 Docker Compose 来实现一键部署 MySQLRedis 和 Nacos。Docker Compose 是一个用于定义和运行多个容器的工具。下面是一个示例的 `docker-compose.yml` 文件,其中包含了 MySQLRedis 和 Nacos 的配置: ```yaml version: '3' services: mysql: image: mysql:latest restart: always ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD=your_password volumes: - ./mysql_data:/var/lib/mysql redis: image: redis:latest restart: always ports: - 6379:6379 nacos: image: nacos/nacos-server:latest restart: always ports: - 8848:8848 ``` 在以上示例中,MySQL 使用了最新版本的镜像,并将容器内的 3306 端口映射到主机的 3306 端口。你需要将 `your_password` 替换为你的 MySQL root 密码。此外,MySQL 的数据将被挂载到主机的 `./mysql_data` 目录下,这样即使容器被删除,数据也能得到保留。 Redis 使用了最新版本的镜像,并将容器内的 6379 端口映射到主机的 6379 端口。 Nacos 使用了最新版本的镜像,并将容器内的 8848 端口映射到主机的 8848 端口。 在安 DockerDocker Compose 后,你可以通过 `docker-compose up -d` 命令来启动这些容器。使用 `-d` 参数可以在后台运行容器。 一旦容器启动成功,你就可以通过相应的端口访问 MySQLRedis 和 Nacos 了。例如,使用 `localhost:3306` 访问 MySQL,`localhost:6379` 访问 Redis,`localhost:8848` 访问 Nacos。 希望这对你有帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嗝屁小孩纸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值