2016-10-14 8 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_hosts и env-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, она будет построена снова из-за изменений в файле конфигурации?

Может быть, я завершаю неправильно и некоторые магии происходят за кулисами, но мне нужно знать, если я делаю это право

+0

Здравствуйте, вы помогли решить проблему? –

ответ

0

Если люди клонировать репозиторий и сделать docker-compose up -d это на самом деле строит новый образ. Если вы хотите, чтобы люди использовали ваше изображение с концентратора докеров, откройте раздел сборки docker-compose.yml и опубликуйте его на странице концентратора докеров. Проверьте 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

Я считаю, что использование моего встроенного образа не будет работать, так как это изображение будет иметь параметры для моего локального ПК и не будет работать для других. Я не ошибаюсь? – ReynierPM

+0

Это зависит только от вашего файла Docker и от того, как вы используете переменные среды. Фактически в редких случаях значения env-переменных используются для построения изображения. Я не могу найти ваше репетирование github в докер-хабе. Вы можете опубликовать здесь, чтобы посмотреть –

+0

[Здесь находится репо в DockerHub] (https://hub.docker.com/r/reynierpm/php55-dev/) и [здесь, в Github] (https: // github ,com/reypm/php55-dev) сообщите мне об этом хотя бы на этом – ReynierPM