我一直在用于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_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 :(得分: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
希望有所帮助
此致