用户登录

服务需要的镜像准备好以后就可以运行定义的服务了。 在项目所在目录的下面,执行一下 docker-compose -f 使用 production.yml 文件,执行一下 up -d,启动在 production.yml 文件里定义的服务。

完成以后,可以查看一下服务的运行状态, docker-compose -f production.yml ps ,显示定义的这几个服务都在运行中。

过一会儿可以再试一下,查看应用的状态,你会发现这个 nest 服务的运行状态是 Exit 。

查看一下这个服务里面输出的日志,用的是 logs,后面加上服务的名字,比如 nest。

服务退出的原因是,在服务里运行的应用不能够连接到它的数据库系统。

回到项目,在项目里给应用准备的数据库服务,它的名字是 mysql, 使用 Docker Compose 组织的这些服务,启动的同时会创建一个内部网络,这些服务之间可以通过这个内部网络使用各自的名字进行沟通。比如在 nest 服务里要使用 mysql 服务里提供的数据库服务,可以通过 mysql 这个名字。

打开 production.env 这个环境变量文件,这里要修改一下配置的 TypeOrm 用的数据库的主机,现在是 localhost,这里要把它换成 mysql,这个 mysql 就是在 Docker Compose 文件里定义的 mysql 这个数据库服务的名字。

这里这个服务的端口号需要再修改一下,换成默认的 3306,因为 mysql 数据库系统默认的端口号是 3306 。

下面需要重新再制作一下这个镜像了。

在终端,执行 docker-comopse -f production.yml build nest 。 这样制作好的镜像就会使用我们修改之后的那个环境变量文件。

完成以后,重新基于这个镜像创建一个运行的容器,运行的是 docker-compose 的 up -d 命令。

你会发现,这里会显示重新创建了这个 nest 容器。

查看一下服务的运行状态,用的是 ps 这个命令。显示所有服务都是运行的状态,过一会儿可以再确定一下运行的状态。

可以再查看一下 nest 这个服务的日志, logs nest, 日志里没有报错,应用在这个容器里运行正常。

最后可以使用 Http 客户端, 请求一下应用的接口再确定一下,这里我们直接使用 curl 这个命令,应用的地址是 localhost:3000 ,返回了一个 Hello World!

现在我们的应用是在一个 Docker 容器里运行的。

启动服务(docker-compose up)《 Nest.js 应用案例:部署 》

统计

14696
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点