2016-10-14 253 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