[英]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.