2016-10-14 213 views
0

我一直在为docker环境中的PHP开发工作,最后我得到它的工作,因为我需要。这种环境依赖于docker-compose和配置的样子:构建和上传图像到Docker Hub,如何从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它将被重新编译,因为配置文件的变化?

也许我错了完成一些魔术发生幕后,但我需要知道如果有人复制你的Git仓库,并做了docker-compose up -d它实际上将建立一个新的形象,如果我这样做的权利

+0

你好,你有没有解决问题? –

回答

0

。如果您只希望人们使用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 

希望它可以帮助

问候

+0

我相信使用我的内置图像将无法正常工作,因为该图像将为我的本地PC设置参数,并且不会为其他人使用。我是对的? – ReynierPM

+0

它只是取决于你的Dockerfile以及你如何使用你的环境变量。事实上,在极少数情况下,env变量值用于构建图像。我无法在docker hub找到你的github repo。你可以在这里发表看看 –

+0

[这是DockerHub中的回购](https://hub.docker.com/r/reynierpm/php55-dev/)和[这里是在Github](https:// github 。com/reypm/php55-dev)让我知道你对此的看法 – ReynierPM