【问题标题】:Building and uploading images to Docker Hub, how to from Docker Compose?构建和上传图像到 Docker Hub,如何从 Docker Compose?
【发布时间】:2016-10-14 15:51:46
【问题描述】:

我一直在docker 环境中工作以进行 PHP 开发,最后我得到了它所需的工作。此环境依赖于docker-compose,配置如下:

version: '2'
services:
    php-apache:
        env_file:
          - dev_variables.env
        image: reynierpm/php55-dev
        build:
            context: .
            args:
                - PUID=1000
                - PGID=1000
        ports:
            - "80:80"
        extra_hosts:
            - "dockerhost:xxx.xxx.xxx.xxx"
        volumes:
            - ~/var/www:/var/www

有一些像extra_hostsenv-file 这样的配置让我有些头疼。为什么?因为我不知道图像在这种情况下是否有效。

我们说:

  • 我已经运行了docker-compose up -d,并且已经构建了带有标签latest 的图像reynierpm/php55-dev
  • 因为我在 docker-compose.yml 文件上设置了正确的值,所以我的一切正常工作
  • 我已登录我的帐户并将图像推送到存储库:docker push reynierpm/php55-dev

如果明天您克隆存储库并尝试运行docker-compose up 但更改docker-compose.yml 文件以适应您的设置会怎样?在这种情况下,图像的表现如何?我的意思是,如果我在任何时候运行命令 docker-compose up 时,创建/上传图像到 Docker Hub 是有意义的,由于配置文件的更改,它将再次构建它?

也许我做错了,幕后发生了一些神奇的事情,但我需要知道我这样做是否正确

【问题讨论】:

  • 您好,您的问题解决了吗?

标签: docker docker-compose docker-registry dockerhub


【解决方案1】:

如果人们克隆您的 git 存储库并执行 docker-compose up -d 它实际上会构建一个新图像。如果您只想让人们使用您来自 docker hub 的图像,请删除 docker-compose.yml 的 build 部分并将其发布到您的 docker hub 页面中。检查this可以看到提议的docker-compose.yml。

只需将其粘贴到您的页面中:

version: '2'
services:
  php-apache:
    image: reynierpm/php55-dev
    ports:
      - "80:80"
    environment:
      DOCKERHOST: 'yourhostip'
      PHP_ERROR_REPORTING: 'E_ALL & ~E_DEPRECATED & ~E_NOTICE'
    volumes:
      - ~/var/www:/var/www

如果您的 env_file 只有几个变量,最好直接在 Dockerfile 中显示它们。最好用环境变量替换 extra_hosts 并更改 php.ini 或通过变量使用额外主机的位置:

.....
xdebug.remote_host         = ${DOCKERHOST}
.....

你可以在你的 Dockerfile 中为这个变量定义一个默认值:

ENV DOCKERHOST=localhost

希望对你有帮助

问候

【讨论】:

  • 我相信使用我构建的映像将无法正常工作,因为该映像将为我的本地 PC 设置参数,而对其他人不起作用。我是对的?
  • 这仅取决于您的 Dockerfile 以及您如何使用环境变量。事实上,在极少数情况下,环境变量值用于构建图像。我在 docker hub 中找不到你的 github 存储库。你可以在这里发帖看看
  • Here is the repo in DockerHubhere is in Github 告诉我你对此的看法
  • 实际上环境变量是在入口点使用的,所以它们不会进入图像。参数 PUID 和 PGID 是构建过程的一部分。为什么需要指定这些值来创建 docker 用户?对于主机安装的卷?认为应该有一个解决方法
  • 我现在没有将它们用于任何事情。应该是一种解决方法是什么意思?
猜你喜欢
  • 1970-01-01
  • 2018-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多