docker项目运行环境搭建(JDK8、mysql8、tomcat9、redis5、nginx1.14)

本文详细介绍了如何使用Docker拉取JDK和MySQL镜像,自定义配置MySQL服务,配置Redis,安装并运行Nginx和Tomcat,包括端口映射、数据卷挂载和安全设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、拉取JDK镜像

docker pull java:8

二、拉取MYSQL镜像

docker pull mysql:8.0.26

自定义目录及配置(可跳过)

1、在/home/mysql目录下新建两个文件夹,一个叫data另一个叫conf

mkdir -p /home/mysql/{data,conf}

2、编写my.cnf

/home/mysql/conf目录下创建my.conf

进入/home/mysql/conf,

cd /home/mysql/conf

创建 my.cnf文件

touch my.cnf
[mysqld]
#Mysql服务的唯一编号 每个mysql服务Id需唯一
server-id=1

#服务端口号 默认3306
port=3306

#mysql安装根目录(default /usr)
#basedir=/usr/local/mysql

#mysql数据文件所在位置
datadir=/var/lib/mysql

#pid
pid-file=/var/run/mysqld/mysqld.pid

#设置socke文件所在目录
socket=/var/lib/mysql/mysql.sock

#设置临时目录
#tmpdir=/tmp

# 用户
user=mysql

# 允许访问的IP网段
bind-address=0.0.0.0

# 跳过密码登录
#skip-grant-tables

#主要用于MyISAM存储引擎,如果多台服务器连接一个数据库则建议注释下面内容
#skip-external-locking

#只能用IP地址检查客户端的登录,不用主机名
#skip_name_resolve=1

#事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
#transaction_isolation=READ-COMMITTED

#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server=utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server=utf8mb4_general_ci

#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'

#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1

#最大连接数
max_connections=400

#最大错误连接数
max_connect_errors=1000

#TIMESTAMP如果没有显示声明NOT NULL,允许NULL值
explicit_defaults_for_timestamp=true

#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet=128M

#MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
#MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800

#内部内存临时表的最大值 ,设置成128M。
#比如大数据量的group by ,order by时可能用到临时表,
#超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size=134217728
max_heap_table_size=134217728

#禁用mysql的缓存查询结果集功能
#后期根据业务情况测试决定是否开启
#大部分情况下关闭下面两项
#query_cache_size = 0
#query_cache_type = 0
 
#数据库错误日志文件
#log-error=/var/log/mysqld.log

#慢查询sql日志设置
#slow_query_log=1
#slow_query_log_file=/var/log/mysqld_slow.log

#检查未使用到索引的sql
log_queries_not_using_indexes=1

#针对log_queries_not_using_indexes开启后,记录慢sql的频次、每分钟记录的条数
log_throttle_queries_not_using_indexes=5

#作为从库时生效,从库复制中如何有慢sql也将被记录
log_slow_slave_statements=1

#慢查询执行的秒数,必须达到此值可被记录
long_query_time=8

#检索的行数必须达到此值才可被记为慢查询
min_examined_row_limit=100

#mysql binlog日志文件保存的过期时间,过期后自动删除
#expire_logs_days=5
binlog_expire_logs_seconds=604800

启动MySql服务

docker run -itd -p 3306:3306  \
 --name mysql8 \
 -v /home/mysql/conf/my.cnf:/etc/my.cnf \
 -v /home/mysql/data:/var/lib/mysql  \
 --privileged=true \
 --restart=always  \
 -e MYSQL_ROOT_PASSWORD=123456 \
 -d mysql:8.0.26

解释
-p 3306:3306 : 第一个3306是liunx的端口号,第二个3306 是Docker容器的端口号.要想远程访问这个数据库 就要先通过远程访问Linux的端口,再映射到docker容器的端口访问mysql
–name mysql8 : myData是容器启动后的名字,可以自定义,但是建议见名知意
-e MYSQL_ROOT_PASSWORD=123456 : MySql启动需要的账户密码,默认root账户,我这里设置123456
-v /usr/local/docker/mysql/data:/var/lib/mysql : 设置数据存储路径 冒号左面的表示宿主机的挂载目录,冒号右边则表示容器内部的路径
-d : 表示后台启动该服务
mysql:8.0.26 : 安装的数据库的版本,我们拉取的是5.7版本

三、远程连接MySql

1、查看我们想要连接的mysql是否启动

#查看在运行的容器

docker ps -s

2、进入容器

docker exec -it 容器号或名字 /bin/bash

docker exec -it da0ae44cec50 /bin/bash

在这里插入图片描述

docker exec -it mysql /bin/bash

3、进入mysql

mysql -uroot -p

#输入密码(跟windows上运行mysql是一样的)

mysql> use mysql;
mysql> alter user 'root'@'%' identified with mysql_native_password by '123456';
mysql> flush privileges;
mysql> select host,user,plugin,authentication_string from mysql.user;

再次远程连接mysql就成功了

4、 开放服务器3306端口

systemctl start firewalld
firewall-cmd  --zone=public --add-port=3306/tcp --permanent
firewall-cmd  --reload

注意:如果是云平台,需要配置安全组,开放3306端口

四、安装Redis

4.1、拉取Redis5.0的docker镜像

docker pull redis:5

重启一下docker ,防止redis启动失败

sudo systemctl restart docker

重启后记得启动MySql

docker start mysql

4.3 创建以下文件及文件夹,方便配置及管理redis

mkdir -p /docker/redis
mkdir -p /docker/redis/data
touch /docker/redis/redis.conf

编辑配置文件

vim /docker/redis/redis.conf
# 不开启守护进程
daemonize no
# 指定Redis端口为6379(默认)
port 6379
# 不要绑定的主机地址,那样无法在容器外部访问
bind 0.0.0.0
#需要密码则打开
requirepass 123456
# 持久化
appendonly yes

4.2 启动Redis

docker run \
-p 6379:6379 \
--name redis \
-v /docker/redis/redis.conf:/etc/redis/redis.conf \
-v /docker/redis/data:/data \
--restart=always \
-d redis:5 redis-server /etc/redis/redis.conf

五、安装Nginx

5.1 拉取镜像文件

docker pull nginx:1.14.1

5.2 运行nginx

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-d nginx:1.14.1

5.3 拷贝配置文件到指定目录

docker container cp nginx:/etc/nginx /mydata/nginx/

5.4 修改文件名称

cd /mydata/nginx/
mv nginx conf

5.5 终止并删除容器

docker stop nginx
docker rm nginx

5.6 重新启动nginx

docker run -p 80:80 --name nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-v /mydata/nginx/logs:/var/log/nginx \
-v /mydata/nginx/conf:/etc/nginx \
-d nginx:1.14.1

六、Docker中安装Tomcat

6.1 搜索tomcat

6.2 拉取

docker pull tomcat:9  

6.2目录挂载

在usr/local/目录下创建一个dev目录,dev目录下再创建一个docker-tomcat目录,用docker-tomcat进行映射到docker中的tomcat容器里的webapps目录

创建容器同时进行挂载

#挂载usr/local/dev/docker-tomcat目录,并运行容器命令如下
docker run -d -p 8080:8080 --name tomcat -v /usr/local/dev/docker-tomcat:/usr/local/tomcat/webapps tomcat:9

进入容器

docker exec -it tomcat /bin/bash
### 官方网站链接汇总 #### Docker 对于Docker,在官方文档中提供了详细的安装指南以及下载地址。适用于CentOS系统的稳定版本可以通过访问[Docker官网](https://docs.docker.com/engine/install/centos/)获取并按照说明进行安装。 #### Nginx 关于Nginx的安装,除了通过`docker pull nginx:1.26.1`来拉取镜像外[^1],也可以直接从[Nginx官方网站](https://nginx.org/en/download.html)下载源码包或二进制文件来进行编译安装或者使用yum等包管理工具安装。 #### MySQL 针对MySQL数据库,建议前往[MySQL官方网站](https://dev.mysql.com/downloads/mysql/)选择适合的操作系统版本进行下载。这里可以选择社区版或者其他付费版本依据实际需求而定。 #### MinIO MinIO是一款高性能的对象存储解决方案,其最新版本和支持的历史版本可以在[MinIO官方网站](https://min.io/download#/linux)找到对应的Linux平台下的安装命令和脚本。 #### Redis Redis作为内存中的数据结构存储系统,可以从[Redis官方网站](https://redis.io/download)获得最新的发布版本。另外也支持通过`docker pull redis:6.0.5`的方式快速部署容器化实例[^2]。 #### JDK8 Java Development Kit (JDK) 的第8个主要版本已经进入长期支持阶段,用户可以直接访问[Oracle JDK 8 Archive Downloads](http://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html),需要注意的是此页面可能需要注册账号才能继续下载;另一种方式则是考虑采用OpenJDK开源实现,比如Adoptium项目提供的构建,可访问[Eclipse Adoptium](https://adoptium.net/?variant=openjdk8&jvmImpl=hotspot)完成下载。 ```bash # 示例:安装 OpenJDK 8 sudo yum install java-1.8.0-openjdk-devel ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值