簡體   English   中英

如何使 docker-compose 從遠程 git 存儲庫構建映像?

[英]How can I make docker-compose build an image from a remote git repository?

Docker-compose 允許您使用預先存在的 docker 圖像或從源構建。 對於構建選項,官方參考要求

指向包含 Dockerfile 的目錄的路徑,或指向 git 存儲庫的 url 的路徑

我想利用后一種情況,這樣我就不必在我的項目中創建 git 子模塊,或在 Docker Hub 上注冊一個新的存儲庫。 不幸的是,沒有關於如何格式化 url 的示例,而且我嘗試過的每種形式都被誤認為是相對文件路徑。

例如

---
letsencrypt:
  build: https://github.com/letsencrypt/letsencrypt.git
...

失敗並出現錯誤:

錯誤:構建路徑 /{MY_CURRENT_PATH}/https:/github.com/letsencrypt/letsencrypt.git 不存在或不可訪問。

我試過的另一個 forms 沒有運氣了:

你在運行1.5.2版嗎? 看起來這最近實際上是在https://github.com/docker/compose/pull/2430中添加的。 嘗試升級。

例:

---

version: '2'

services:
  redis:
    image: "redis:3.2.3"
    hostname: redis

  redis-commander:
    build: https://github.com/joeferner/redis-commander.git
    command: --redis-host redis
    links:
      - "redis:redis"
    ports:
      - 8081

經測試:

$ docker-compose -v
docker-compose version 1.11.2, build dfed245

文件tests/unit/config/config_test.py顯示:

def test_valid_url_in_build_path(self):
    valid_urls = [
        'git://github.com/docker/docker',
        'git@github.com:docker/docker.git',
        'git@bitbucket.org:atlassianlabs/atlassian-docker.git',
        'https://github.com/docker/docker.git',
        'http://github.com/docker/docker.git',
        'github.com/docker/docker.git',
    ]

這是通過compose/config/config.py#L79-L85

DOCKER_VALID_URL_PREFIXES = (
    'http://',
    'https://',
    'git://',
    'github.com/',
    'git@',
)

我認為現在有更好的方法來做到這一點!

如果您想使用位於存儲庫內的 Dockerfile 並且存儲庫是公開的,您最好的猜測是使用原始文件。

例如,對於https://github.com/certbot/certbot中的文件 Dockerfile_dev,您可以使用https://raw.githubusercontent.com/certbot/certbot/master/Dockerfile-dev

然后在 docker-compose 中,像這樣添加它以便從遠程位置使用 Dockerfile。

certbot_dev:
  image: certbot-dev
  build: https://raw.githubusercontent.com/certbot/certbot/master/Dockerfile-dev

當您單擊文件預覽中名為“Raw”的按鈕時,您可以找到原始鏈接: https://github.com/certbot/certbot/blob/master/Dockerfile-dev

在github上找到原始文件

很抱歉恢復這個主題,但它作為第一個鏈接出現,我在其他地方找不到任何其他信息。

如果要從特定的存儲庫標簽構建,則需要 append #tagname 例如

build: https://github.com/postgres/pgadmin4.git#REL-6_4

請參閱 docker文檔

還建立在@philipp-fock 的答案之上。 使用原始文件是可行的,只要原始 Dockerfile 不包含該存儲庫中的任何其他文件(無復制、添加)

使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM