出品丨Docker公司(ID:docker-cn)
编译丨小东
每周一、三、五晚6点10分 与您不见不散!
在之前的文章中,我们对容器与虚拟机进行了足够的讨论。所以,今天我想跟大家谈谈关于容器以及如何将其应用到如今的行业中来。以前,我们曾经在 Ubuntu 上运行所有的生产服务器,后来我们决定将所有的生产设置迁移到 CentOs 环境中。由于我们要在不同的操作系统上执行它,因此我们不得不再次重新安装所有的依赖项,这无疑是一件非常痛苦的事情。为了克服所有关于可移植性问题的挑战,我们决定使用 Docker。
除了基础操作系统之外,我们还必须安装像 Docker 这样的容器引擎。对于整个设置,我们只需要有一个名为 Dockerfile 的预配置文件,它帮助我们将每个应用程序作为一个单独的 VM (被称为容器)运行在容器引擎(Docker)之上。它可以帮助我们在任何平台上运行这些容器,不会有任何额外的手动操作。
将 Spring Boot 应用程序封装在 Docker 容器中
我们目前正在开发一款名为“Panna”的在线视频采访平台。由于它是一个端到端的平台,所以它有不同的服务。因此,我们决定将它所包含的服务全部分解为微服务(MicroServices),让其独立于其他服务,以便后期维护和扩展。下面,让我来讲解下我们是如何将组件进行封装的。
如上图所示,Dockerfile 文件将告诉 docker 应该如何构建我们的镜像。接下来让我们详细讲解每条命令:
- FROM 235746/centos-java: 这是我们自定义构建的 docker 镜像,它由 CentOs OS 和 java 组成。
- RUN mkdir /opt/resume-application:它创建了一个文件夹来复制其中的文件。
- COPY resume-snapshot-0.0.1.jar /opt/resume-application/: 它将文件从 build 目录复制到指定路径。
- WORKDIR /opt/resume-application/: 它将我们当前的目录更改为指定路径。
- EXPOSE 9090:这条命令是告诉 Docker 在启动基于该镜像的容器时公开9090端口。
- ENTRYPOINT [ “sh”, “-c”, “java -Dspring.profiles.active=production resume-snapshot-0.0.1.jar” ]:每当容器启动时,它都会启动我们的应用程序。
一旦我们完成了 Dockerfile 文件,那么就可以将它上传到 DockerHub 或其他任意的 docker 镜像仓库中。由于我们一直在使用 DockerHub,所以让我们开始构建并将 Dockerfile 文件上传至 DockerHub 吧!
docker build -t
上面的命令用于构建我们的 Dockerfile 文件。 让我们创建一个标签并将其推送到 docker 镜像仓库。
docker login
docker tagdocker-id/repo:tagname
docker push docker-id/repo:tagname
现在,可以将其下载到任何地方,并通过将其暴露给端口80或443来运行它。
docker run -p 80:9090 docker-id/repo:tagname
您可以通过运行此容器的服务器 IP 地址来访问您的应用程序。我希望这可以帮助您构建自己的 Dockerfile 文件。
http://hostname
总 结
Docker 简化了大部分管理工作,并使流程变得更加清晰、明朗。它有助于我们维护不同版本的软件,同时方便我们将应用构建、交付到生产环境中。