Docker Compose 使用 git clone
·
问题:Docker Compose 使用 git clone
我试图在我的 docker compose 上通过 Git 进行克隆,但我刚刚开始使用 docker,我不知道该怎么做。我想在 de apache(文档根目录)/var/www/html 中进行下载。该行是:command: bash -c "git clone git@github.com:user/project.git"
version: '3.8'
services:
mysql:
image: mysql:8.0.21
command: --default-authentication-plugin=mysql_native_password
restart: always
container_name: mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=user
- MYSQL_PASSWORD=pass
- MYSQL_MAX_ALLOWED_PACKET=1024M
- MYSQL_INNODB_BUFFER_POOL_SIZE=1G
- MYSQL_INNODB_LOG_FILE_SIZE=256M
- MYSQL_INNODB_LOG_BUFFER_SIZE=256M
ports:
- '3361:3360'
volumes:
- "./docker/mysql:/docker-entrypoint-initdb.d"
apache:
image: php:7.4.11-apache
restart: always
container_name: apache
ports:
- '8081:80'
- '443:8443'
volumes:
- ./docker/www:/var/www/html
command: bash -c "git clone git@github.com:user/project.git"
environment:
XDEBUG_CONFIG: "remote_enable=1 remote_host=192.168.15.21 remote_port=8081 remote_autostart=1"
depends_on:
- mysql
links:
- mysql
phpmyadmin:
image: phpmyadmin:latest
restart: always
container_name: phpmyadmin
ports:
- 8080:80
depends_on:
- mysql
environment:
- PMA_ARBITRARY=1
volumes:
- "./docker/phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php"
解答
@GustavoFilgueiras您遇到错误的原因是因为您用于apache服务的图像php:7.4.11-apache没有预装git。此外,根据您的反馈,以下假设您正在尝试连接到私有存储库,并且通常使用的 SSH 密钥位于默认路径~/.ssh/id_rsa中(如果不是这种情况,请在docker-compose.yml中更新)。您有两种选择来解决它:
1.(推荐)以php:7.4.11-apache为基础镜像新建自定义镜像。这带来了将这种依赖项直接添加到映像中的好处,这样启动时间就不会遇到不必要的延迟。为此,您需要在同一目录中创建一个Dockerfile,如下所示:
FROM php:7.4.11-apache
RUN \
apt-get update && \
apt-get install git -y && \
ssh-keyscan -t rsa github.com > ~/.ssh/known_hosts
然后你可以在你的docker-compose.yml中修改你的apache服务,如下所示:
apache:
build: .
restart: always
container_name: apache
ports:
- '8081:80'
- '443:8443'
volumes:
- ./docker/www:/var/www/html
- ~/.ssh/id_rsa:/root/.ssh/id_rsa
command: bash -c "git clone git@github.com:user/project.git"
environment:
XDEBUG_CONFIG: "remote_enable=1 remote_host=192.168.15.21 remote_port=8081 remote_autostart=1"
depends_on:
- mysql
links:
- mysql
- 在您的
docker-compose.yml中包含多个命令。这不需要任何额外的文件,但结果会增加不必要的启动时间延迟,因为每次都需要安装git依赖项。例如,docker-compose.yml中的apache服务可能如下所示:
apache:
image: php:7.4.11-apache
restart: always
container_name: apache
ports:
- '8081:80'
- '443:8443'
volumes:
- ./docker/www:/var/www/html
- ~/.ssh/id_rsa:/root/.ssh/id_rsa
command:
- bash
- -c
- >
apt-get update;
apt-get install git -y;
ssh-keyscan -t rsa github.com > ~/.ssh/known_hosts;
git clone git@github.com:user/project.git;
environment:
XDEBUG_CONFIG: "remote_enable=1 remote_host=192.168.15.21 remote_port=8081 remote_autostart=1"
depends_on:
- mysql
links:
- mysql
更多推荐


所有评论(0)