Docker 部署tomcat、MySQL、redis
  HataGTb8c2ak 2023年11月13日 24 0

docker 容器安装tomcat

docker search tomcat
docker pull tomcat
docker images tomcat 
docker run -d -p 8080:8080 --name tom01 tomcat

浏览器访问:
宿主机IP地址+端口号
192.168.XX.XX:8080
如果页面访问tomcat是404访问失败(关闭防火墙)
进入 tomcat容器内  默认在/usr/local/tomcat路径下
执行
rm -rf webapps
mv webapps.dist webapps
然后再次访问 如图所示

PS: Tomcat 最新版本安装会出现这种问题,需要进去删除webapps文件再拷贝新的 

image.png

安装旧版本的tomcat 既不用进入容器内修改文件也可正常访问,
#删除安装的新版tomcat

docker run -d -p 8080:8080 --name tom02 billygoo/tomcat8-jdk8 
billygoo/tomcat8-jdk8   表示tomcat8-jdk8是billygoo发布的 

浏览器再次访问,即可直接访问成功,不需要再进入容器更改配置文件操作。

PS: 不需要search 或者 pull 下载, run时就会自动pull下载的 

docker 容器安装Mysql

容器安装mysql之前,请一定要确认宿主机是否安装过mysql,否侧映射端口时可能会冲突,或者映射别的端口
正常启动mysql的语法规则,(启动之后有一定的问题需要修改,具体的请根据自身需求参考下列“解决”项的方法)

docker pull mysql:5.7
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7  
-e MYSQL_ROOT_PASSWORD=123456  指定mysql的root登入密码

docker exec -it 容器ID /bin/bash   进入mysql容器
mysql -uroot -p    		   输入密码进入mysql

PS:
问题一:
mysql安装好之后 插入英文是没问题的,插入中文会报错,需要修改字符集
show variables like 'character%';    查看字符集设置为 Latin1 需要设置为utf8

问题二: 
mysql数据库中的数据备份问题

解决:
按照此命令运行容器MySQL
docker run -d -p 3306:3306 --privileged=true -v /tmp/mysql/log:/var/log/mysql -v /tmp/mysql/data:/var/lib/mysql -v /tmp/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7

解决字符集不能插入中文问题。
cd /tmp/mysql/conf/
vim my.cnf   	加入如下配置内容,设置服务端和客户端的字符集编码都为utf8

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
 
docker restart mysql
docker exec -it 容器ID /bin/bash
mysql -uroot -p      进入之后 此时再次插入中文即可识别,不会报错。
show variables like 'character%';  可以查看字符集是否从Latin1 变为 utf8

为避免误操作删除数据库容器,解决数据库中的数据备份问题。
docker rm -f 容器ID      删除运行中的mysql容器

然后使用相同的起mysql容器的命令进行启动
docker run -d -p 3306:3306 --privileged=true -v /tmp/mysql/log:/var/log/mysql -v /tmp/mysql/data:/var/lib/mysql -v /tmp/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
docker exec -it 容器ID /bin/bash
mysql -uroot -p       此时进入新启动的mysql容器,删除之前的那个MySQL容器中的数据还在。

PS:因为启动容器时 使用 -v 做了备份。(上述启动容器命令中的:-v /tmp/mysql/data:/var/lib/mysql)

docker 容器安装redis

常规安装redis操作步骤(参考)

docker pull redis:6.0.8
docker run -d -p 6379:6379 redis:6.0.8
docker exec -it 8a6ef95d72ce /bin/bash     默认进入/data下
redis-cli				   进入redis
生产环境下还请参考下列redis安装步骤。

mkdir -p /app/redis 		在宿主机下创建redis的目录
cd /app/redis
cp /xxx/redis.conf /app/redis   这一步需要自己想办法找一个redis的原始配置文件拷贝过来使用
vim /app/redis/redis.conf

修改配置文件
1: 允许redis外地连接
加上注释 # bind 127.0.0.1 
protected-mode yes  改成 no  (保护模式,可改可不改)
2: daemonize no
将daemonize yes  改成 daemonize no(yes改成no)或者将该行注释掉
因为该配置和docker run 中 -d 参数冲突,会导致容器一直启动失败。
3: redis 持久化 (可开可不开)
appendonly no 改为 yes 即可

docker run -p 6379:6379 --name redis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d  redis:6.0.8 redis-server /etc/redis/redis.conf

使用该命令启动容器,
-v 指定了数据备份及配置文件的共享
redis-server服务的启动指定表示启动后请读取/etc/redis/redis.conf
而/etc/redis/redis.conf配置文件使用-v映射成了宿主机下的/app/redis/redis.conf
相当于更改宿主机的redis.conf 等于修改了容器内的redis.conf,而启动时去读容器内的redis.conf

PS:如果启动不起来,将 -d 选项换成 -it 然后根据报错将配置文件中的报错行注释掉然后再换成-d重新启动
或者下载其他版本的redis 镜像进行尝试。

测试容器内启动redis之后是否连接了宿主机内的配置文件
退出redis容器,修改宿主机内redis.conf 配置文件
将 databases 10 (默认的 16 改成 10)

docker restart redis     	       重启redis 容器 
docker exec -it 容器ID /bin/bash       进入redis容器 
redis-cli		               进入redis
select 10                  	       select 1-9 会返回ok,如果超过10会报错,表示连接成功
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
HataGTb8c2ak