在这里我们使用Tomcat容器来运行war包,不过作为一个网站一个程序,如果需要用到数据库的,那么Tomcat容器中如何连接Mysql呢?
已经pull了tomcat和mysql镜像,可以使用docker的连接系统(–link)连接多个容器方式解决tomcat容器中使用mysql
[root@izbp1b5k5bjps0dw8owk7tz ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest 2d084b11164d 7 days ago 463MB mysql 5.7.22 66bc0f66b7af 2 weeks ago 372MB [root@izbp1b5k5bjps0dw8owk7tz ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@izbp1b5k5bjps0dw8owk7tz ~]#
先启动mysql
docker run --name mysql -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.221
命令说明:
•–name:自定义别名
•-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
•-v /home/mysql/conf:/etc/mysql/conf.d:将主机 /home/mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf
•-v /home/mysql/data:/var/lib/mysql :将主机 /home/mysql/data 目录挂载到容器的 /var/lib/mysql
•-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码
•-d:以守护进程方式运行
注:运行的mysql暴露端口(-p 3306:3306),如果在生产环境,为了安全也可以不向外暴露端口,之后在运行tomcat容器可以通过(--link)指定容器来使用mysql
运行tomcat
docker run --name tomcat -p 8080:8080 -v /etc/localtime:/etc/localtime:ro -v /home/tomcat/logs:/usr/local/tomcat/logs -d --link mysql:db tomcat1
命令说明:
•–name:自定义别名
•-p 8080:8080:将容器的 8080 端口映射到主机的 8080 端口
•-v /etc/localtime:/etc/localtime:ro:挂载localtime文件到容器内,保证两者所采用的时区是一致的
•-v /home/tomcat/logs:/usr/local/tomcat/logs:将主机 /home/tomcat/logs 目录挂载到容器的 /usr/local/tomcat/logs
•-d:以守护进程方式运行
•–link mysql:db:告诉当前容器需要使用mysql容器,并命名为db
这样就可以在tomcat容器中通过db访问mysql了
附: Java中数据库连接参考语句:
jdbc_url=jdbc:mysql://db:3306/databasename?useUnicode=true&characterEncoding=utf8 [root@izbp1b5k5bjps0dw8owk7tz mysql]# docker run --name mysql -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.22 c7378e84c19b0baa448d687c089ef8cc0ce058f71b2f79d8801fc9be7bd2c5b4 [root@izbp1b5k5bjps0dw8owk7tz mysql]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7378e84c19b mysql:5.7.22 "docker-entrypoint.s…" 6 seconds ago Up 5 seconds 0.0.0.0:3306->3306/tcp mysql [root@izbp1b5k5bjps0dw8owk7tz logs]# docker run --name tomcat -p 8080:8080 -v /etc/localtime:/etc/localtime:ro -v /home/tomcat/logs:/usr/local/tomcat/logs -d --link mysql:db tomcat 1458f532ef36e12ad49b4a5d90ff9b38abed00986094225354594a5fe7591362 [root@izbp1b5k5bjps0dw8owk7tz logs]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1458f532ef36 tomcat "catalina.sh run" 3 seconds ago Up 2 seconds 0.0.0.0:8080->8080/tcp tomcat c7378e84c19b mysql:5.7.22 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp mysql
总结
以上所述是小编给大家介绍的Docker中Tomcat容器使用Mysql容器的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
问题内容: 计划 我希望我的tomcat服务器能够在单独的容器中连接到我的MySQL服务器。 问题 Tomcat无法连接到MySQL 我使用了wordpress教程中的一些详细信息,这些信息涉及与mysql容器建立链接并创建指向MySQL的链接。 尽管tomcat和mysql旋转得很好,但我似乎无法使tomcat能够连接到MySQL,但是这些设置在我的本地计算机上也可以正常运行。 我也尝试使用它,
我的目标:我需要收集从运行的tomcat容器到Filebeat容器的tomcat日志。 问题:我不知道如何从Tomcat容器中获取收集的日志文件。 到目前为止我尝试过的内容:我尝试创建一个docker卷并将tomcat日志添加到该卷中,并从filebeat容器访问该卷,但没有成功。 docker-containers:包含3个主子目录(Tomcat、Nginx和Postgres)。ENV文件和do
我正在寻找一种从docker容器内部使用GPU的方法。
我正在最新的官方MySQL docker容器中运行MySQL。主机是Windows10。 我正在使用“Docker-Compose up MySQL”启动以下服务: 我遇到的问题是,当MySQL数据库文件驻留在主机的卷上时,MySQL无法运行,并且我不断收到以下错误消息:“是否您已经有另一个mysqld服务器在套接字上运行:”/var/lib/MySQL/MySQL.sock“” 值得注意的是,我
我正在运行带有--net=host选项的2个docker容器,因此网络是透明的(docker容器使用与主机相同的网络设备)。 我可以从外部访问docker容器中的多个服务。然而,有一件事是行不通的,我开始用剪刀在上面跑。。。 在docker主机上有一个运行在端口3306上的mysql数据库。没有问题。 Docker容器1在端口3307上运行mysqld,Docker容器2在端口3308上运行mys
主要内容:Docker 客户端,容器使用,运行一个 web 应用,查看 WEB 应用容器,网络端口的快捷方式,查看 WEB 应用程序日志,查看WEB应用程序容器的进程,检查 WEB 应用程序,停止 WEB 应用容器,重启WEB应用容器,移除WEB应用容器Docker 客户端 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。