Вы можете точно сохранить каталог своих репозиториев. Вам вообще не нужен специальный макет для Docker.
Допустим, что в вашем пред-докерском взгляде на мир ваша среда была:
Затем вы добавляете Dockerfile (и, если хотите, docker-compose.yml) в каждый проект:
Вы упоминаете "папку, в которой есть все необходимые контейнеры". Это не совсем верно. Все ваши Docker-контейнеры будут находиться в собственной структуре каталогов Docker (с которой вы не хотите связываться вручную). Что вам нужно беспокоиться, так это как встраивать ваши зависимости в ваш докер контейнер для каждого проекта.
Допустим, ваш проект1 будет использовать только php, поэтому вы можете использовать официальный контейнер php docker (https://hub.docker.com/_/php/).
Тогда ваш Dockerfile может быть чем-то вроде
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 run \
-v /home/repositories/project1:/project1 \
php:7.0-cli \
php /project1/index.php
Это связывание монтирует ваш каталог исходного кода с вашего компьютера в контейнер, в котором вы запускаете сервер php. Также не забывайте, что если вы запускаете сервер разработки внутри док-контейнера, вам нужно связать порты, чтобы вы могли подключиться к порту на локальном хосте и перенаправить его в контейнер.
Существует много полезной информации, которую вам может быть интересно прочитать на https://hub.docker.com/_/php/, если вы используете php.
Git, я все равно установил бы на вашем хосте, особенно если монтировал ваш исходный код в контейнер, как я описал