使用 Docker 设置本地开发和 dockerizing 存储库?

Setting local development with Docker and dockerizing repositories?

我最近才开始学习 Docker,我想做的是将我现有的所有项目和所有新项目 docker 化。因此,基本上将我的本地开发环境设置为 Docker,但如果有意义,请将每个 project/repository 隔离开,因为一个 php-app 可能在 php5 上,另一个在 php5 上php7等

我之前通常做的是将我所有的 projects/repositories 放在 home/Repositories 文件夹下,所以我想遵循相同的模式,尽管每个项目文件夹将各自 运行环境。

我已经在 OS 上安装了 Docker(我正在 Ubuntu Linux 全新安装,所以没有 PHP 或其他任何东西已安装),但是我想问几个问题,因为我以前没有任何使用 Docker

的经验

据我了解,每个 project/repository 都应该在根目录中包含一个 docker-compose.yml 文件和一个 docker 文件夹,我将所有 Dockerfiles 都放在该文件夹中,是吗对吗?

- home
-- Repositories
--- a-laravel-project
---- docker // folder that has all required containers, like PHP, Mysql, Nginx conf etc etc
---- docker-compose.yml
---- index.php

--- another-oop-php-project
---- docker // folder that has all required containers, like PHP, Mysql, etc etc
---- docker-compose.yml
---- index.php

我是否还需要本地安装 Git?我想为了对我所有现有的存储库进行 docker 化,我需要先克隆它们,所以在这种情况下 git 是(预)必需的,对吗?

在此先致谢,如有任何反馈,我们将不胜感激。

你可以保留你的仓库目录。 Docker 根本不需要任何特殊布局。

比方说,在您 docker 之前的世界观中,您的环境是:

  • 存储库
    • 项目 1
      • index.php
    • 项目2
      • index.php

然后向每个项目添加一个 Docker 文件(如果需要 docker-compose.yml):

  • 存储库
    • 项目 1
      • index.php
      • Docker文件
    • 项目2
      • index.php
      • Docker文件

你提到一个"folder that has all required containers"。这不太对。您所有的 docker 容器都将位于 Docker 自己的目录结构中(您不想手动弄乱)。您需要关心的是如何将依赖项构建到每个项目的 docker 容器中。

假设您的项目 1 将仅使用 php,因此您可以使用官方 php docker 容器 (https://hub.docker.com/_/php/)。

那么您的 Docker 文件可能类似于

FROM php:7.0-cli
COPY index.php /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]

或者如果你想从 ubuntu 或其他东西构建你自己的。您从基础 ubuntu 映像开始,然后在 ubuntu.

上安装您需要的依赖项
FROM ubuntu
RUN apt-get install php # Or whatever is appropriate, I don't use php
WORKDIR /usr/src/myapp
CMD [ "php", "./index.php" ]

然后当你在 project1 目录中并想要构建你的 docker 容器时。那就运行吧。

docker build -t project1:latest .
docker run project1:latest

源文件注意事项:

希望将源文件保存在 docker 容器之外,但 运行 将测试服务器保存在 docker 容器中是很常见的。在这种情况下,您需要执行以下操作:

docker run \
  -v /home/repositories/project1:/project1 \
  php:7.0-cli \
  php /project1/index.php

该绑定将您的源代码目录从您的机器安装到您 运行 php 服务器所在的容器中。另外不要忘记,如果您 运行 在 docker 容器中安装开发服务器,您需要绑定端口,以便您可以连接到本地主机上的端口并将其转发到容器.

如果您使用 php,您可能有兴趣在 https://hub.docker.com/_/php/ 上阅读很多有用的信息。

Git,我仍然会在您的主机上安装,特别是如果按照我的描述将您的源代码安装到容器中