通过优锐课的java的架构学习,特整理分享出本教程系列的第二部分演示了如何在Docker CLI和示例应用程序中使用docker-compose来运行多个容器。
在上一篇文章中,我写了有关Docker,运行数据库所需的CLI命令以及Spring Boot应用程序的文章。 我们使用Dockerfile来设置环境并通过分别运行容器然后在它们之间建立链接来运行应用程序。 但是对于多个容器应用程序,我们可以使用docker-compose工具。 Docker CLI可以管理一个容器,但是docker-compose可以管理多个容器并定义相关服务。
Java面试必备之JVM+GC教程
知其然,要知其所以然。JVM是Java语言的基础,也是面试官最喜欢提问的内容,学完本门课程之后,你将获得如下技能:
1.熟练掌握Java跨平台原理
2.Java类加载器及加载机制
3.熟练掌握Java内存模型
4.熟练掌握GC回收器,回收算法及GC调优
5.熟练使用各种GC调优工具,真正做到理论+实战并行
6.金三银四面试技巧及职业规划解读
重要条款
如果要使用docker-compose工具运行服务,则必须遵循Docker文档中也定义的这些步骤。
1.我们需要使用Dockerfile定义应用程序环境,以便可以在任何地方复制它。
2.我们需要在docker-compose.yml中定义组成应用程序的服务,以便它们可以在隔离的环境中一起运行。
3.运行docker-compose命令以运行/停止容器或部署/取消部署应用程序
我们需要一个docker-compose.yml文件来编写服务。 在Dockerfile中,我们定义了应用程序的环境,在docker-compose文件中,我们写下了服务的其他属性,例如哪个服务将在哪个端口上运行,哪个服务将依赖于其他服务,哪个端口将被转发。 到其他端口以进行公共访问,定义网络,集群应用程序等。
安装
在上一篇文章中,我描述了安装Docker的步骤。 因此,我们可以通过运行命令docker-compose -v检查docker-compose是否已安装。 就我而言,它返回:docker-compose版本1.24.1,内部版本4667896b
代码下载并运行
现在我们可以从此处下载代码。 或者我们可以克隆并签出功能/泊坞窗分支。 在这里我们可以看到Dockerfile与我上一篇文章中描述的代码相似。
Dockerfile
1
FROM java:8
2
COPY /build/libs/book-manager-1.0-SNAPSHOT.jar book-manager-1.0-SNAPSHOT.jar
3
ENTRYPOINT ["java","-jar","book-manager-1.0-SNAPSHOT.jar"]
docker-compose.yml文件如下所示:
YAML
1
version: '3'
2
services:
3
docker-mysql:
4
restart: always
5
container_name: docker-mysql
6
image: mysql
7
environment:
8
MYSQL_DATABASE: book_manager
9
MYSQL_ROOT_PASSWORD: root
10
MYSQL_ROOT_HOST: '%'
11
volumes:
12
- ./sql:/docker-entrypoint-initdb.d
13
14
ports:
15
- "6033:3306"
16
healthcheck:
17
test: "/usr/bin/mysql --user=root --password=root--execute \"SHOW DATABASES;\""
18
interval: 2s
19
timeout: 20s
20
retries: 10
21
22
book-manager-app:
23
restart: on-failure
24
build: ./
25
expose:
26
- "10222"
27
ports:
28
- 10222:10222
29
environment:
30
WAIT_HOSTS: mysql:3306
31
depends_on:
32
- docker-mysql
我定义了两个服务,分别为docker-mysql和book-manager-app。 服务book-manager-app取决于docker-mysql。 我们正在使用docker-compose版本
3.MySQL将在docker容器的3306端口上运行,但我们可以从6033公开访问它。book-manager-app将在端口10222上运行。我们在该容器上有一个初始DML和DDL文件 将在Docker和MySQL设置的启动时间运行的SQL目录。
使用docker-compose运行应用程序
现在,我们将应用一些命令来运行我们的应用程序。 我想我们已经从上面的链接下载了项目。 我们将转到项目根目录。 要运行该应用程序,我们将使用以下命令:
docker-composeup-这将执行Dockerfile命令并运行docker-compose文件中定义的服务。
docker-compose down-这将停止并删除docker-compose文件正在运行的所有容器。
ocker-compose up --build-如果我们对Dockerfile,war / jar文件或docker-compose文件进行更新,则我们必须执行此命令以获取Docker计算机上的更新数据。
因此,我认为在运行docker-compose之后,它将运行应用程序以及Docker计算机中的所有服务。 忽略一些初始异常日志以进行数据库通信。 要检查它是否运行,我们可以检查http:// localhost:10222 / book。
喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
如果你对java技术很感兴趣也可以+ qq群:907135806 交流学习,共同学习进步。
不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货加vx:ddmsiqi 领取啦