Docker安装Tomcat、Nginx、Redis

101 阅读4分钟

安装Tomcat

可以先通过netstat -tunlp|grep 8080查看端口是否被占用。

$ netstat -tunlp|grep 8080
$ docker run --name dockertomcat -p 8080:8080 -d tomcat

此时输入服务器IP:8080会出现404。 进入tomcat的目录,发现有webapps和webapps.dist两个文件,而webapps里面为空,webapps.dist才是我们要的东西、把webapps删掉,把webapps.dist改名为webapps。

[root@lym ~]# docker exec -it dockertomcat /bin/bash
root@ca52b7019e8d:/usr/local/tomcat# rm -rf webapps
root@ca52b7019e8d:/usr/local/tomcat# mv webapps.dist webapps

之后即可成功访问。 image.png 之后再挂载本地文件(如果在docker run时直接挂载本地文件将无法直接对容器内的webapps进行修改)。

docker -v /mydockerdata/tomcat/webapps:/usr/local/tomcat/webapps \
-v /mydockerdata/tomcat/conf/server.xml:/usr/local/tomcat/conf/server.xml \
-v /mydockerdata/tomcat/conf/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
-v /mydockerdata/tomcat/logs:/usr/local/tomcat/logs

安装Redis

1.下载配置文件

在服务器上添加官网下载的配置文件,本例是放在/mydockerdata/redis/目录下。 对redis.conf进行如下修改:

bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问

protected-mode no #默认yes,开启保护模式,限制为本地访问

daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败

databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。

dir  ./ #输入本地redis数据库存放文件夹(可选)

appendonly yes #redis持久化(可选)

2.创建容器

同样,拉取镜像并创建容器。

docker run -p 6379:6379 --name dockerredis -v /mydockerdata/redis/redis.conf:/etc/redis/redis.conf -v /mydockerdata/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes

其中redis-server /etc/redis/redis.conf表明以配置文件启动redis,加载容器内的conf文件,最终找到的是挂载的目录/mydockerdata/redis/redis.conf。 --appendonly yes 表示开启redis持久化。

3.测试是否成功运行

采用docker ps查看运行的容器;docker logs dockerredis/d3573419fbdd (容器名称/id)查看redis是否成功运行。

[root@lym ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                               NAMES
d3573419fbdd   redis          "docker-entrypoint.s…"   28 seconds ago   Up 25 seconds   0.0.0.0:6379->6379/tcp              dockerredis
ca52b7019e8d   tomcat         "catalina.sh run"        32 minutes ago   Up 32 minutes   0.0.0.0:8080->8080/tcp              dockertomcat
2ac06ff43a01   mysql:8.0.19   "docker-entrypoint.s…"   3 hours ago      Up 2 hours      33060/tcp, 0.0.0.0:3307->3306/tcp   dockermysql
[root@lym ~]# docker logs dockerredis
1:C 24 Dec 2020 09:36:19.269 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 24 Dec 2020 09:36:19.269 # Redis version=6.0.9, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 24 Dec 2020 09:36:19.269 # Configuration loaded
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 6.0.9 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

1:M 24 Dec 2020 09:36:19.270 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 24 Dec 2020 09:36:19.270 # Server initialized
1:M 24 Dec 2020 09:36:19.270 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:M 24 Dec 2020 09:36:19.270 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
1:M 24 Dec 2020 09:36:19.271 * Ready to accept connections

安装Nginx

1.将Nginx关键目录映射到本机

mkdir -p /mydockerdata/nginx/www /mydockerdata/nginx/logs /mydockerdata/nginx/conf

其中: www: nginx存储网站网页的目录; logs: nginx日志目录; conf: nginx配置文件目录。 同理,下载相应的nginx.conf到/mydockerdata/nginx/conf目录。

运行Nginx容器

同理,要先检查映射的81端口是否已经被占用,并检查阿里云服务器安全组配置中是否开放了81端口。检查无误后,拉取Nginx,并将www,logs,conf目录映射到本地。

$ docker run -d -p 81:80 --name dockernginx -v /mydockerdata/nginx/www:/usr/share/nginx/html -v /mydockerdata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydockerdata/nginx/logs:/var/log/nginx nginx

在/mydockerdata/nginx/www下新建index.html,访问IP:81即可发现映射成功。 image.png 之后即可通过编辑/mydockerdata/nginx/conf/nginx.conf,针对项目进行负载均衡、反向代理等操作。