Docker开发。 当地环境。 第一部分

我喜欢docker的主要原因之一可能是,它消除了在计算机上安装各种服务的需求。 其中包括Apache或Nginx Web服务器本身,数据库以及应用程序基础结构的其他组件。 整个基础架构都注册在docker-compose.yml配置文件中,并通过单个命令与您的应用程序一起启动。 从本质上讲,与Docker合作的开发人员所需要的只是Docker本身以及最喜欢的开发环境和一切!

为了使进一步的叙述完整,您仍然必须简短地讲述什么是docker及其基本概念。

因此,泊坞窗应被视为某种虚拟化和容器化系统。
泊坞窗的基本概念之一是映像。 可以将图像与包含某些信息的文件(甚至是程序可执行文件)进行比较。 Docker可以启动映像。 运行中的映像称为容器。 可以启动具有相同映像的多个容器。

那么图像中包含什么?

可能是操作系统的映像。 例如,ubuntu的图像。 可能存在带有数据库,Web服务器和php以及几乎所有内容的映像。 开始这些知识对我们来说就足够了。

假定读者本身已安装了docker和docker-compose。

我们开始将环境从简单部署到更复杂。

第1课 Nginx安装


让我们尝试首先仅安装Nginx。 使用以下内容创建docker-compose.yml:

version: '3.0' services: nginx: image: nginx ports: - 80:80 

接下来,运行docker-compose up -d命令,以下内容将作为响应出现:

 Creating network "lesson1_default" with the default driver Creating lesson1_nginx_1 ... done 

我们在浏览器的地址栏中输入http:// localhost /并在我们的眼睛中看到“欢迎使用nginx!”的问候。 如果是这样,那么您就走对了。

这是怎么回事

为了理解撰写文件的结构,尽管它是英语的最佳信息来源,但我还是建议您参考官方文档 。 该文档描述了所有可能使用的选项。

让我们分析显示的文件:

  • version-在开始时,声明了compose文件的版本。 您可以指定2.0,而不是3.0。 不再支持更少。 撰写文件中可用的选项取决于版本。
  • 服务-服务公告
  • nginx-我们的服务名称,由其任意决定。 在此示例中,匹配图像的名称。
  • image:nginx-要使用的图像的名称。
  • ports-该指令声明端口转发。 8080:80-此条目表示容器的打开端口80将对应于运行docker的主机上的端口8080。 在该文件的示例中,容器中的端口80连接到计算机上的端口80。

我们将更详细地检查图像声明,即image:nginx指令。

所有映像的主要存储库是Docker Hub,那里有许多不同的现成映像(您可以收集自己的映像,但稍后会介绍更多)。 声明的nginx图像就是其中之一。

至于“转发”端口。 如果如上例所示指定80:80匹配,则nginx将在localhost:80或仅在localhost可用。 如果端口80已被占用,则可以指定8080:80。 然后该站点将在localhost:8080上可用。 因此,如果您完全忘记指定此ports指令,则该端口将仅在容器内可用,并且nginx将不再可通过浏览器访问。

容器正在运行。 以及如何与他实际合作?

安装Web服务器假定我们要使用它来接收和查看站点的html页面。 有一个问题。 如何将任何HTML文件传输到容器? 卷将帮助我们做到这一点


让我们将docker-compose.yml转换为以下形式:

 version: '3.0' services: nginx: image: nginx ports: - 80:80 volumes: - ./html:/usr/share/nginx/html 

volume指令是从新指令中出现的,该指令表示本地./html文件夹正在容器中的地址/ usr / share / nginx / html挂载。

安装时,位于容器内部指定地址的文件夹将替换为本地计算机上的文件夹。

要使其工作,请在与docker-compose.yml文件相同的级别上创建html文件夹,然后向其中添加带有自由文本的index.html文件。 例如,来自Docker的Hello!

然后使用相同的docker-compose up -d命令重新创建容器
Docker重新创建容器。

 Recreating lesson1_nginx_1 ... done 

在浏览器中检查结果。 我们看到:Docker你好! 全部解决了。

重要的是要注意,已安装的文件夹可用于实时更改。 即 如果我们更改index.html文件中的文本或将新文件添加到文件夹,则所有这些更改将立即在容器内可用。 这个重要功能允许您通过docker进行开发。 我们在计算机上对装入的文件,文件夹进行更改,它们会立即显示在docker容器中。

第2部分-Nginx + PHP + MySql + phpMyAdmin

Source: https://habr.com/ru/post/zh-CN459972/


All Articles