繁体   English   中英

如何使用 docker-compose.yml 在映射为卷的目录中克隆 GitHub 存储库?

[英]How to clone a GitHub repo inside a directory mapped as a volume using docker-compose.yml?

我有一个docker-compose.yml类似于:

version: '3'
services:
  my_service:
    image: ....

    container_name: ...
    volumes:
      - "./data:/my_service/data"

    command: >
      ....

After running docker-compose pull , I run git clone git@github.com:..... , on the host machine, to clone a private GitHub repo inside the shared directory (mapped as volume). 这工作正常,但我想知道是否可以使用 Docker 处理此手动步骤。

做一些研究,我发现了一些使用Dockerfile的例子,但如果可能的话,我宁愿只使用docker-compose.yml

实现此目的的正确方法是编写一个自定义 docker 文件并通过 docker 组合来解决它。

这是一个例子:

docker-compose 文件片段*

version: '3'

services:
  my_service:
    build:
      context: 
      dockerfile: my_service.dockerfile

    # ... continue ...

my_service.dockerfile

FROM some_image:some_tag

RUN apt update -y && \
    apt install -y git

RUN cd some_folder && \
    git clone some_uri

这是一个示例,它在 nginx 映像上使用自定义command来 git 在启动服务器之前克隆一些存储库:

version: '3'
services:
  nginx:
    image: nginx:latest
    volumes:
      - "./data:/my_service/data"
    command: ["bash", "-c", "apt-get update; apt-get install -y git; rm -rf /usr/share/nginx/html; git clone https://github.com/cloudacademy/static-website-example /usr/share/nginx/html; nginx -g \"daemon off;\";"]
    ports:
      - 8080:80

它使用带有所有适当命令的单行字符串,您需要适应您的用例。 另外,请注意,根据您使用的图像,您可能会也可能无法添加包。

这可能有助于快速解决问题,但请参阅@Antonio Petricca 答案以获得更强大的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM