以docker方式启动tomcat+nginx。

一、tomcat

新建tomcat文件夹,可以放入自己的应用。

1
2
3
4
5
6
7
mkdir tomcat
cd tomcat
mkdir app
cd app
touch index.html
echo <h1>helloworld</h1> >index.html
cd ..

拉取镜像,并建立开启容器(注意这里并不用开启8080端口映射):

1
2
docker pull tomcat
dockers run -id --name myTomcat -v $PWD:/usr/local/tomcat/webapps tomcat

查看容器ip:

1
docker inspect myTomcat | grep "IPAddress"

假设这里查到的是172.17.0.3

二、nginx

首先服务器防火墙开启80端口:

1
2
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

新建nginx文件夹,并新建nginx.conf

1
2
3
4
mkdir nginx
cd nginx
touch nginx.conf
vim nginx.comf

填入nginx.conf的内容,注意http->server->location->proxy_pass。修改为上一步查到的ip

注意:这里不能填入宿主机的ip。(因为tomcat默认并不是以host模式开启,而是以桥接模式开启)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include 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 logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

location / {
root html;
proxy_pass http://172.17.0.3:8080;
index index.html index.htm;
}

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

拉取镜像,并建立开启容器:

1
2
docker pull nginx
docker run -d --name myNginx -p 80:80 nginx

将之前写的配置文件复制到容器中,并重启容器:

1
2
docker cp nginx.conf  nginx:/etc/nginx/nginx.conf
docker restart nginx

三、测试

访问http://服务器ip/app