§1 tomcat
docker pull tomcat:jdk8-corretto-al2
docker run -d -p 8080:8080 tomcat:jdk8-corretto-al2
§2 mysql
docker pull mysql:5.7
docker run -d -p 13306:3306 -v /docker/mysql/5.7/log:/var/log/mysql -v /docker/mysql/5.7/data:/var/lib/mysql -v /docker/mysql/5.7/conf:/etc/mysql/conf.d --privileged=true -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
指令说明
- -d mysql 是个服务,需要后台运行
- -p 主机上可能也有 mysql ,可能占用 3306,因此最好换个主机端口,上面指令中使用 13306
- -v 挂载数据卷,将日志、数据、配置与容器解耦,防止停止、删除容器后上述内容丢失
- -v /docker/mysql/5.7/log:/var/log/mysql 挂载日志目录
- -v /docker/mysql/5.7/data:/var/lib/mysql 挂载数据目录
- -v /docker/mysql/5.7/conf:/etc/mysql/conf.d 挂载配置目录
- --privileged=true 打开数据卷权限
- -e 配置环境变量
docker-hub mysql 中解释了相关路径配置和参数配置,如
坑
远程连接 ERROR 2003
查看 root 用户权限
use mysql;
select User,authentication_string,Host from user;
添加 root 用户远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
指定 mysql 字符集
一般,容器中的默认字符集都是 ladin,若建库建表时也未指定字符集可能导致一系列问题,比如无法录入中文
可以通过配置文件指定,配置文件目录是 docker run -v 中对应的目录
vim /docker/mysql/5.7/conf/my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8
重启容器,
docker restart mysql容器的ID
§3 redis
docker pull redis:6.0.8
docker run -d -p 16379:6379 --privileged=true \
-v /docker/redis/6.0.8/conf/redis.conf:/etc/redis/redis.conf \
-v /app/redis/6.0.8/data:/data \
redis:6.0.8 \
redis-server /etc/redis/redis.conf
指令说明
- -d mysql 是个服务,需要后台运行
- -p 主机上可能也有 redis,可能占用 6379,因此最好换个主机端口,上面指令中使用 16379
- -v 挂载数据卷,将数据、配置与容器解耦,防止停止、删除容器后上述内容丢失
- -v /docker/redis/6.0.8/conf/redis.conf:/etc/redis/redis.conf 挂载(指定)配置文件
- -v /app/redis/6.0.8/data:/data 挂载数据目录
- --privileged=true 打开数据卷权限
- redis-server /etc/redis/redis.conf 用于指定 redis 服务启动时使用哪个配置文件的配置
redis.conf 内容
# 开启密码验证(可选)
requirepass 123
# 允许redis外地连接,需要注释掉绑定的IP
# bind 127.0.0.1
# 关闭保护模式(可选)
protected-mode no
# 注释掉daemonize yes,或者配置成 daemonize no。因为该配置和 docker run中的 -d 参数冲突,会导致容器一直启动失败
daemonize no
# 开启redis数据持久化, (可选)
appendonly yes