`

docker下安装redis,rabbitmq,nginx,tomcat

 
阅读更多

1.安装redis


docker pull redis:latest  #下载镜像

$ docker run -itd --name redis-test -p 6379:6379 redis   #运行容器

$docker exec -it redis-test /bin/bash  #进入容器

root@4515431c9ae1:/data# redis-cli     #连接redis客户端

127.0.0.1:6379> set mkl 123456

OK

 

127.0.0.1:6379> get mkl

"123456"

 


2.安装rabbitmq

 

docker pull rabbitmq        #下载rabbitmq镜像

 

docker run -d --hostname my-rabbit --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq 

        

安装插件:

docker ps 
docker exec -it rabbit /bin/bash
rabbitmq-plugins enable rabbitmq_management

 

访问地址:

http://192.168.11.218:15672,这里的用户名和密码默认都是guest

 

 3.安装nginx

 

docker pull nginx

 

方式1,直接启动:

docker run --name nginx-test -p 8080:80 -d nginx

 

http://192.168.11.218:8080   #访问nginx

 

方式2,和宿主机目录绑定:

 

#运行之前,一定要保证宿主机上有nginx.conf,否则绑定后找不到nginx.conf启动文件,可以手动考贝,或者执行docker cp

docker cp nginx-test:/etc/nginx ./ #把容器里的nginx的目录复制

docker rm -f nginx-test #删除测试的nginx-test

docker run --name mynginx  -p 8088:80  -p 443:443  -v /etc/localtime:/etc/localtime:ro  -v /wwwroot:/wwwroot  -v /usr/nginx/nginx/nginx.conf:/etc/nginx/nginx.conf  -v /usr/nginx/nginx/logs:/var/log/nginx  --restart always  -d nginx

 

docker exec -it mynginx nginx -t  #检查配置文件是否正确

 

docker exec -it mynginx nginx -s reload  #重新加载配置文件

 

在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启:

docker run --restart=always CONTAINER ID

 

如果已经启动了则可以使用如下命令:

docker update --restart=always CONTAINER ID #设置启动nginx时自动启动
docker update --restart=no CONTAINER ID #设置启动nginx时不启动

 

default.conf文件如下:

server {
    listen       80;
    server_name  localhost;

    #access_log  /var/log/nginx/host.access.log  main;

    location / { 
        root  html; 
        index  index.html index.htm; 
        proxy_pass http://server-web/; 
    }

    location /tos-server/ { 
        root  html; 
        index  index.html index.htm; 
        proxy_pass http://server-web/tos-server/; 
    }

    location /freeter-admin/ { 
        root  html; 
        index  index.html index.htm; 
        proxy_pass http://server-web/freeter-admin/; 
    }

   
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

 

nginx.conf文件如下:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    upstream server-web{
        server 192.168.11.218:8081;
        server 192.168.11.218:8082;
    }

    include /etc/nginx/conf.d/*.conf;
}

 

4.安装tomcat

 

docker pull tomcat:9-jre8-alpine   #最新版的tomcat,和WAR包上兼容性有问题,一直报404

 

启动tomcat主要有下面3种方式:

1.直接启动,每次需要重新上传war包

 

docker run -d -p 8080:8080 --name tomcat tomcat:9-jre8-alpine

 

 注:前者是外围访问端口:后者是容器内部端口。webapps目录下文件为空,需将webapps.dist内容拷过来

 

copy war包到容器中,docker会自动加载war包

docker cp /usr/war/freeter-admin.war tomcat:/usr/local/tomcat/webapps

 

若无法上传文件到服务器,给目录加权限:

sudo chown -R mkl /usr/app/

 

2. 和宿主机上的目录绑定

 创建Tomcat目录

[root@localhost /]# mkdir -p /usr/app/tomcat

 

拷贝容器内Tomcat配置文件和日志到本地

[root@localhost /]# docker cp tomcat:/usr/local/tomcat/conf /usr/app/tomcat/conf

[root@localhost /]# docker cp tomcat:/usr/local/tomcat/logs /usr/app/tomcat/logs

 

停止tomcat容器

[root@localhost /]# docker stop tomcat

 

删除tomcat容器

[root@localhost /]# docker rm tomcat

 

创建并运行tomcat容器

[root@localhost /]# docker run -d -p 8081:8080 --name tomcat -v /usr/app/tomcat/webapps:/usr/local/tomcat/webapps -v /usr/app/tomcat/conf:/usr/local/tomcat/conf -v /usr/app/tomcat/logs:/usr/local/tomcat/logs --restart=always tomcat:9-jre8-alpine

  

查看创建的容器

[root@localhost /]# docker ps | grep tomcat

 

查看容器的ip地址

[root@localhost /]# docker inspect --format='{{.NetworkSettings.IPAddress}}' tomcat

 

查看tomcat日志

[root@localhost /]# docker logs -f -t --tail 20 tomcat

3.通过Dockerfile文件,生成镜像
from tomcat:9-jre8-alpine
MAINTAINER 149101934@qq.com
copy tos-server.war /usr/local/tomcat/webapps
copy freeter-admin.war /usr/local/tomcat/webapps
docker build -t tos-server:v1 .
docker run -p 8081:8080 tos-server:v1  #交互启动

docker run -d -p 8081:8080 --name tos-server tos-server:v1  #后台启动

 

导出镜像

  • docker save #ID or #Name
  • 示例 
    docker save -o nginx.tar nginx:latest 
    或 
    docker save > nginx.tar nginx:latest 
    其中-o和>表示输出到文件,nginx.tar为目标文件,nginx:latest是源镜像名(name:tag)

  • docker load [options]
  • 示例
    docker load -i nginx.tar

    docker load < nginx.tar
    其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息

注:部署web项目后也许会出现docker容器与宿主、docker 容器与tomcat 应用打印日志时间和我们当前时间相差8个小时,可以添加如下配置:

 

①启动容器时,将系统时间挂载到容器内,可以解决docker容器与宿主时间不一致问题,如下所示:

添加参数

-v /etc/localtime:/etc/localtime:ro

 

完整命令如下示例:

sudo docker run -d --name tos-server -p 8081:8080 -v /etc/localtime:/etc/localtime:ro tos-server:v1

 

②docker 容器与tomcat 应用打印日志时间不一致, 启动tomcat容器后进入tomcat的"bin"目录,修改catalina.sh文件, 在注释结束的第一行添加如下内容:

 

JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8  -Duser.timezone=GMT+08"

 

如下图所示:

这里写图片描述

 

修改保存后重启docker容器就可以了。

重启方法:

"docker ps"查询容器id,使用如下命令重启:

 

docker restart 容器id

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics