构建和上传图像到Docker Hub,如何从Docker Compose创建?

时间:2016-10-14 15:51:46

标签: docker docker-compose docker-registry dockerhub

我一直在用于PHP开发的docker环境中工作,最后我根据需要开始工作。此环境依赖于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,并且已经制作了标记为reynierpm/php55-dev的图片latest
  • 我的一切正常,因为我在docker-compose.yml文件上设置了正确的值
  • 我已登录到我的帐户,并将图像推送到存储库:docker push reynierpm/php55-dev

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

也许我错了,一些魔法发生在幕后,但我需要知道我是否正确行事

1 个答案:

答案 0 :(得分:1)

如果人们克隆你的git存储库并执行docker-compose up -d,它实际上会构建一个新的图像。如果您只希望人们使用docker hub中的图像,请删除docker-compose.yml的构建部分并将其发布到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

希望有所帮助

此致