繁体   English   中英

Docker Compose 与 git clone 一起使用

[英]Docker Compose using with git clone

我试图通过 Git 在我的 docker compose 上进行克隆,但我刚刚开始使用 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服务, docker-compose.yml所示:

    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
  1. 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

暂无
暂无

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

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