本文是一个具体项目的实现
1.使用docker-compose连编启动各个容器,并实现各个容器的互联。
2.使用独立域名访问项目。
3.项目连接数据库。
1在做项目之前:要将host文件进行修改。
将我们的ip地址与域名进行绑定。
具体效果如图:
2.将自己的项目放置到centos中/tomcat/webapps/index文件夹下。
3.编写nginx.conf放置到/nginx/conf/文件夹下。
具体nginx.conf的内容如下:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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 tomcat {
}
server {
listen 80;
server_name www.skedu.com;
location / {
proxy_pass http://skedu.com:8080;
index index.html index.htm;
}
}
include /etc/nginx/conf.d/*.conf;
}
注意:上面要修改的内容一个是server_name 要改成你的域名。另一个要修改的内容是proxy_pass 。模板如下:proxy_pass http://nginx和tomcat的内部连接名:tomcat的端口;
我的是:
server {
listen 80;
server_name www.skedu.com;
location / {
proxy_pass http://skedu.com:8080;
index index.html index.htm;
}
4.项目中mysql的连接地址要是tomcat和mysql的内部连接地址。
5…编写docker-compose.yml文件:
version: "3"
services:
mysql:
container_name: mysql
image: mysql:5.7.25
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=123456
nginx:
container_name: nginx
image: nginx
ports:
- 80:80
volumes:
- /nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro
external_links:
- tomcat:skedu.com
tomcat:
container_name: tomcat
image: tomcat
ports:
- 8080:8080
volumes:
- /tomcat/webapps/index:/usr/local/tomcat/webapps/ROOT
external_links:
- mysql:db.skedu.com
建议初学者直接使用这个模板来修改即可
**注意:**这里面需要注意的是:
1.nginx与tomcat的连接名为skedu.com,这个连接名用于前面的在nginx中修改nginx.conf文件中的proxy_pass http://skedu.com:8080;
2.tomcat与mysql的连接名为:这个连接名主要是用于项目中的mysql数据库连接中使用。
3.挂载tomcat的数据卷时,数据卷在容器中的位置一定要是在webapps的ROOT目录下。