构建图像并将其上传到 Docker Hub,如何从 Docker Compose?

Building and uploading images to Docker Hub, how to from Docker Compose?

我一直在 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 但更改 docker-compose.yml 文件以适合您的设置会怎样?在这种情况下图像的表现如何?我的意思是 create/upload 图像到 Docker Hub 是有意义的,如果任何时候我 运行 命令 docker-compose up 由于配置文件的更改,它将再次构建?

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

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

希望对您有所帮助

此致