构建图像并将其上传到 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_hosts
和 env-file
等配置让我有些头疼。为什么?因为我不知道图像是否会在这种情况下工作。
假设:
- 我有 运行
docker-compose up -d
并且带有标签 latest
的图像 reynierpm/php55-dev
已经构建
- 我让一切正常工作,因为我在
docker-compose.yml
文件中设置了正确的值
- 我已经登录到我的帐户并将图像推送到存储库:
docker push reynierpm/php55-dev
如果明天您克隆存储库并尝试 运行 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
希望对您有所帮助
此致
我一直在 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_hosts
和 env-file
等配置让我有些头疼。为什么?因为我不知道图像是否会在这种情况下工作。
假设:
- 我有 运行
docker-compose up -d
并且带有标签latest
的图像reynierpm/php55-dev
已经构建 - 我让一切正常工作,因为我在
docker-compose.yml
文件中设置了正确的值 - 我已经登录到我的帐户并将图像推送到存储库:
docker push reynierpm/php55-dev
如果明天您克隆存储库并尝试 运行 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
希望对您有所帮助
此致