Docker 实战——部署 Nginx 镜像容器、Tomcat 镜像容器、MySQL 镜像容器
在上一节中,我们已经创建了一个Nginx容器,并通过端口映射让外部可以访问到这个容器。在这一节中,我们将创建一个Tomcat容器和一个MySQL容器,并配置它们之间的网络通信。
- 创建Tomcat容器
首先,我们需要拉取Tomcat的Docker镜像。
docker pull tomcat
然后,我们可以使用下面的命令创建一个Tomcat容器,并将8080端口映射到宿主机的8080端口。
docker run --name my-tomcat -p 8080:8080 -d tomcat
- 创建MySQL容器
同样,我们先拉取MySQL的镜像。
docker pull mysql
然后,我们创建一个MySQL容器,并设置环境变量MYSQL\_ROOT\_PASSWORD。
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
注意:在生产环境中,你应该为MySQL的root用户设置一个复杂的密码。
- 配置Tomcat容器与MySQL容器之间的通信
为了让Tomcat容器可以连接到MySQL容器,我们需要创建一个网络并将两个容器都连接到这个网络。
docker network create my-network
然后,我们将Tomcat容器和MySQL容器都连接到这个新创建的网络。
docker network connect my-network my-tomcat
docker network connect my-network my-mysql
现在,Tomcat容器可以通过my-mysql
来连接到MySQL容器了。
- 配置Nginx作为Tomcat的反向代理
我们需要修改Nginx的配置文件来转发请求到Tomcat容器。首先,我们需要进入Nginx容器。
docker exec -it my-nginx /bin/bash
然后,我们可以编辑Nginx的配置文件。
vi /etc/nginx/conf.d/default.conf
在文件中,我们添加一个新的upstream
块来指向Tomcat容器,并修改server
块来使用这个upstream
。
upstream tomcat_server {
server my-tomcat:8080;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat_server;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
保存并退出编辑器,然后重启Nginx容器。
docker restart my-nginx
现在,Nginx容器将会把进入的HTTP请求转发到Tomcat容器。
- 测试
你可以通过访问宿主机的80端口来测试Nginx是否正确转发请求到Tomcat。
curl http://localhost
如果Tomcat容器运行正常,你应该能看到Tomcat的默认页面。
以上就是部署Nginx、Tomcat和MySQL的Docker容器,并配置它们之间通信的全过程。在生产环境中,你还需要考虑安全性、持久化存储和负载均衡等问题。
评论已关闭