【Docker】中mysql、tomcat、nginx、redis 环境部署

【Docker】中mysql、tomcat、nginx、redis 环境部署

注意在应用部署之前,docker 服务必须是开启状态 systemctl start docker

目录

文章目录

  • 【Docker】中mysql、tomcat、nginx、redis 环境部署
    • 一、MySQL 部署
    • 二、Tomcat 部署
    • 三、Nginx 部署
    • 四、Redis 部署
    • 五、Java安装
    • 六、nacos部署
      • 1 拉取nacos镜像并启动
      • 2 启动nacos命令
    • 七、nacos连接mysql

一、MySQL 部署

  1. 拉取 MySQL 镜像,此处选择的是 MySQL 8.0.27 版本;

    docker pull mysql:8.0.27
    

    img

  2. 创建容器,容器名称为 mysql;

    docker run -di --name=dapangdong_mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    

    -p 表示端口映射关系,格式为 宿主机映射端口 : 容器运行端口;
    -e 表示添加环境变量,此处设置 root 用户登录密码为 123456。

上面命令的各个参数含义如下:

  • --name=dapangdong_mysql 容器的名字叫做 dapangdong_mysql

  • -p 3308:3306 容器 MySQL 默认端口 3306 射到本机的 3308 端口。

  • -d 在后台运行容器并打印容器ID。

  • --rm 停止运行后,自动删除容器文件。

  • -e MYSQL_ROOT_PASSWORD=123456 设置环境变量 MYSQL_ROOT_PASSWORD 值为 123456 来设置 root 密码,更多环境变量参考。

  • --character-set-server=utf8mb4 --collation-server=utf8mb4_col 该命令以默认字符集 utf8mb4 和数据库默认排序规则 utf8mb4 启动 MySQL 服务,可以将许多配置选项作为标志传递给 mysqld。这将使您可以灵活地自定义容器,而无需 cnf 配置文件,配置 MySQL Server 的另一种方法是准备一个配置文件,并将其安装在容器内服务器配置文件的位置。有关详细信息,请参见持久数据和配置更改。

  • -v /etc/localtime:/etc/localtime:ro 是让容器的时钟与宿主机时钟同步,避免时区的问题,roread only 的意思,就是只读。


    或者启动

    docker run --name mysqlname \
      -p 3308:3306 \
      -e MYSQL_ROOT_PASSWORD=my123456 \
      -d mysql:8.0.27 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    

    如下即为创建成功:

img

  1. 远程登录 MySQL

    容器创建完成之后,就可以在本地进行 MySQL 连接了;如下图在本地的 Navicat 中新建一个连接:

img

要知道我们并不是直接去连接容器中的 MySQL,而是通过宿主机进行连接。此时所连接的正是我们刚刚所创建的容器中的 MySQL;

img

Docker 下 MySQL 部署完成!

二、Tomcat 部署

  1. 拉取 tomcat 镜像;

    docker pull tomcat:7-jre7
    

    img

  2. 创建容器;

    docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
    

    -v 目录映射关系,前者为宿主机目录,后者是映射到宿主机上的目录,如果没有该目录会自动创建
    -p 端口映射关系,前者为宿主机端口,后者是容器内的映射端口

    img

  3. 部署应用

    容器创建成功之后,我们这时直接在本地访问是没有效果的,报错 404;

img

这是因为我们使用到了目录挂载,本地的目录 /usr/local/webapps 是新创建的,没有任何应用,所以访问时无显示。这时候我们可以为它部署一个应用,也就是往此目录中放入一个应用,我在这里用了一个简单的测试 war 包 cluster_test.war;

链接:Tomcat 测试 war 包 cluster_test.war
提取码:0214

img

上传后如下,目录中出现 war 包和自动解压后的文件;

img

成功部署后就可以在本地进行访问了,如下访问成功,不再报错;

img

Docker 下 tomcat 部署完成!

需要注意在 tomcat 部署过程当中,如部署后无法正常访问,报错 404,这说明 tomcat 服务是没问题的。那么无法正常访问可能有三个原因:

防火墙未开放该端口;
访问路径写的有问题;
war 包本身有问题;

三、Nginx 部署

  1. 拉取 nginx 镜像

    docker pull nginx
    

    img

  2. 创建容器

    docker run -di --name=mynginx -p 80:80 nginx
    

    img

    创建成功我们在本地浏览器访问宿主机 IP,可以看到 nginx 欢迎界面;

img

  1. 部署应用

    我们这里将一个静态页面部署到 nginx 中,如下我在本地创建了一个 html 文件夹 和 index.html 文件;

img

将它上传至我们的宿主机;

进入 nginx 容器;

docker exec -it mynginx /bin/bash

找到配置文件 default.conf,可以看到 nginx 的页面文件是保存于 /usr/share/nginx/html/ 中的;

img

img

所以我们将需要部署的页面文件移动到此目录;

docker cp html mynginx:/usr/share/nginx/

此时再次在本地访问宿主机 IP,页面显示已由 nginx 欢迎页面变成了我们部署的页面;

Docker 下 nginx 部署完成!

img

四、Redis 部署

  1. 拉取镜像

    docker pull redis
    

    img

  2. 创建容器

    docker run -di --name=myredis -p 6379:6379 redis
    
    docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /opt/myredis/redis.conf:/etc/redis/redis.conf  -v /opt/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass rootroot
    

    说明:

    -p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。

    –log 日志相关

    –name redis 指定该容器名称,查看和进行操作都比较方便。

    -v 挂载文件或目录 :前表示主机部分(必须为绝对路径),:后表示容器部分。

        /opt/myredis/redis.conf:/etc/redis/redis.conf 挂载我的配置文件
    
        /opt/myredis/data:/data 挂载redis的数据路径
    

    -d redis 表示后台启动redis

    redis-server /etc/redis/redis.conf 指定配置文件的路径。/etc/redis/redis.conf指的是容器内的文件路径,对应的宿主机的路径要根据挂载卷的路径找到。我的宿主机路径就是/opt/myredis/redis.conf

    –appendonly yes 开启redis 持久化

    –requirepass rootroot 设置密码为rootroot

    img

  3. 测试

    使用本地的 redis 进行测试,如下图; redis 官方下载地址

    img

在 redis 目录下打开终端,redis-cli -h 宿主机IP 连接宿主机;

img

连接成功,占用 6379 端口且可正常运行;

img

Docker 下 redis 部署完成!


五、Java安装

第一步:访问Docker Hub官网搜索相应jdk版本。

docker search jdk 

第二步:首先需要拉取jdk镜像

docker pull java

第三部:运行jdk镜像

docker run -di --name=jdk1.8  java

第四部:进入jdk镜像

docker exec -it jdk1.8 bash

然后输入命令,如果显示版本就成功。

java -version

【Docker】中mysql、tomcat、nginx、redis 环境部署_第1张图片

方法二:

下载openjdk11

dockere pull openjdk:11

下载中:

【Docker】中mysql、tomcat、nginx、redis 环境部署_第2张图片

下载完成:

【Docker】中mysql、tomcat、nginx、redis 环境部署_第3张图片

2.查看镜像

docker images
说明:

REPOSTORY:镜像的仓库源

TAG:镜像的标签(可以有多个,latest表示最新的,可以自己指定)

IMAGE ID :镜像 id

CREATE:创建的时间

SIZE:镜像的大小

【Docker】中mysql、tomcat、nginx、redis 环境部署_第4张图片

3.创建容器

docker run -d -t --name java-11 openjdk:11 

请添加图片描述

查看container运行情况

docker ps

4.进入容器,查看Java版本

# 进入容器 -it 后面跟容器ID

docker exec -it 8da1c0e4efc2 /bin/bash

请添加图片描述

5.退出容器

# 退出容器
ctrl + d

6.停止容器

6.1停止容器前,先查看运行中的容器
docker ps

请添加图片描述

6.2将需要停止的容器ID(CONTAINER ID)记录下来,然后运行命令

# 在这里我们需要关闭的是java11的容器,所以它的container id是:618fc714a851

docker stop 618fc714a851

# 执行成功后,会展示所停止的容器id

请添加图片描述

7.删除未运行的容器

# 在这里,我们还可以看见jdk11的容器还在,那么我们需要彻底删除容器,则需要运行此命令
# docker rm CONTAINER ID

docker rm 618fc714a851

8.删除镜像

docker rmi 镜像名称 -f 
# 说明: -f 强制删除


六、nacos部署

1 拉取nacos镜像并启动

docker pull nacos/nacos-server

【Docker】中mysql、tomcat、nginx、redis 环境部署_第5张图片

2 启动nacos命令

docker run -d \
--name nacos \
-p 8848:8848 \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
nacos/nacos-server

至此,我们已经可以使用nacos服务,UI地址:http://ip:8848/nacos 账号:nacos 密码:nacos

【Docker】中mysql、tomcat、nginx、redis 环境部署_第6张图片


七、nacos连接mysql

一、操作步骤
1、首先从docker hub pull mysql的镜像

docker pull mysql:5.7.29

#我这里pull的是mysql5.7.29的版本:默认是mysql:latest

2、镜像下载完成后进入运行容器

docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7.29

#–name 是容器名称

#-itd 后台运行

#-p 将容器端口映射到宿主机端口

#-e 设置相关参数,此处为mysql初始化密码

#mysql:5,7,29 是pull下来的镜像,可以使用docker images查看

3、容器创建成功后可以进入到mysql容器了

docker exec -it 名称/id/bin/bash

#docker exec -it mysql /bin/bash

使用mysql -uroot -p 输入密码进入mysql

4、到此mysql镜像部署完成,接下来开始部署nacos镜像

下载nacos镜像

docker pull nacos/nacos-server 

5、下载完成后启动nacos容器

docker run -d \
--name nacos \
-p 38848:8848 \
-e MODE=standalone \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=172.17.0.4 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_USER=root \
-e MYSQL_SERVICE_PASSWORD=123456 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
--restart=always \
nacos/nacos-server


# 说明: 
# --name nacos ->设置运行改容器name为nacos
# -p 38848:8848 ->把容器里的8848端口映射给宿主机的38848端口,映射后可以通过38848端口访问Nacos
# MODE=standalone ->表示单机启动 
# MYSQL_SERVICE_HOST ->mysql容器的ip   *****注意
# MYSQL_SERVICE_PORT ->mysql的端口
# MYSQL_SERVICE_PASSWORD ->mysql密码
# nacos_config ->mysql中Nacos的数据库名称
# --restart=always ->能够使我们在重启docker时,自动启动相关容器

#ip 是你的mysql容器的ip(不要写成127.0.0.1)

查询方式:docker inspect mysql | grep IPAddress 查询出来写上去即可

## 查看服务对应IP

如果想查看某个服务的ip该怎么查看。进入服务bash中后,执行ifconfig,会发现并不好用。那么该如何查看ip呢。

这个需要用到命令docker inspect NAME|ID

6、启动容器后ip:8848/nacos在页面访问nacos即可看到nacos的界面

img

7、测试是否连接到容器数据库,新增一个配置看数据库是否存在

img

img

如图所示则证明nacos已经连接到容器mysql了

docker run -d
–name nacos
-p 8848:8848
-e MODE=standalone
-e SPRING_DATASOURCE_PLATFORM=mysql
–restart=always
nacos/nacos-server:latest

你可能感兴趣的:(后端,docker,mysql,nginx)