docker安装tomcat和mysql
docker安装tomcat
- 下载tomcat
docker pull tomcat
2. 运行容器
docker run -p 8080:8080 -d --name tomcat tomcat
- 访问tomcat
此时查看容器是已经成功启动,但是却访问不了。
进入容器内部进一步查找原因
看到tomcat默认部署应用的目录 webapps 里面为空,难怪访问不了,但是有个类似的目录webapps.dist,
我们看到原本在webapps目录下面的文件现在都在webapps.dist目录下面
ps:为了tomcat能正常访问,可以选择在容器里面将webapps.dist目录下的内容复制到webapps里面或挂载本地数据卷的方式到weapps目录下还可以根据官方tomcat镜像制作一个能直接访问的tomcat镜像。
这里采用挂载宿主机目录的方式。
方式一 直接修改容器内tomcat文件
进入容器 -- docker exec -it tomcat bash
复制webapps.dist里面文件到webapps目录下 -- cp -r webapps.dist/* webapps/
重启tomcat容器 -- docker restart tomcat
方式二 将宿主机文件挂载到容器相应目录
// 我们先在本地创建一个 tomcat 目录
mkdir /usr/local/tomcat
// 将容器内 webapps.dist的内容复制到宿主机
// 我们先在本地创建一个 tomcat 目录
mkdir /usr/local/tomcat
// 将容器内 webapps.dist的内容(只复制ROOT目录就行了,仅仅测试而已)复制到宿主机指定目录
docker cp tomcat:/usr/local/tomcat/webapps.dist/ROOT .
// 以挂载的形式启动tomcat
docker run -p 8080:8080 -d --name tomcat -v /usr/local/tomcat:/usr/local/tomcat/webapps tomcat
docker安装mysql
- 由于mysql数据库作为数据存储媒介,势必会产生数据写入,所以一般来讲是需要将mysql容器内部的动态数据通过挂载的方式映射到宿主机指定的目录,实现持久化
1.下载mysql镜像
docker pull mysql
2.启动mysql容器
docker run -p 3306:3306 -d --name mysql -e MYSQL_ROOT_PASSWORD=root -v 宿主机数据目录:/var/lib/mysql mysql
注意:mysql8修改了加密规则,如果客户端使用Navicat连接,会出现加密算法报错的问题,启动mysql容器后进入容器使用mysql命令行执行以下命令即可。
alter user 'root'@'%' identified with mysql_native_password by '密码';
flush privileges;
docker安装redis
为redis集群节点通信单独创建一个docker网络
docker network create redis --gateway 192
创建配置文件
for port in $(seq 1 6); \
do \
mkdir -p /usr/local/redis/node-${port}/conf
touch /usr/local/redis/node-${port}/conf/redis.conf
cat <<- EOF >/usr/local/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 192.168.0.1${port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done
启动容器
for port in $(seq 1 6); \
do \
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /usr/local/redis/node-${port}/data:/data \
-v /usr/local/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --network redis --ip 192.168.0.1${port} redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf; \
done
进入任一redis容器
docker exec -it container /bin/sh
执行redis创建集群命令
redis-cli --cluster create 192.168.0.11:6379 192.168.0.12:6379 192.168.0.13:6379 192.168.0.14:6379 192.168.0.15:6379 192.168.0.16:6379 --cluster-replicas 1
docker 部署pgsql
docker run -it --name postgres \
--privileged=true \
--restart always \
-e ALLOW_IP_RANGE=0.0.0.0/0 \
-e POSTGRES_PASSWORD=postgres@qujian \
-p 5432:5432 \
-v /data/postgres:/var/lib/postgresql/data \
-d postgres