gpt4 book ai didi

docker - 构建镜像并将其上传到Docker Hub,如何从Docker Compose进行镜像?

转载 作者:行者123 更新时间:2023-12-02 18:16:22 25 4
gpt4 key购买 nike

我一直在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_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-compose up命令,将镜像创建/上传到Docker Hub是有意义的,由于配置文件上的更改,它将再次生成该镜像吗?

    也许我做错了,幕后发生了一些魔术,但我需要知道我是否做对了

    最佳答案

    如果人们克隆您的git存储库并执行docker-compose up -d,则实际上会建立一个新镜像。如果只希望人们使用来自docker hub的图像,请删除docker-compose.yml的build部分并将其发布在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

    希望能帮助到你

    问候

    关于docker - 构建镜像并将其上传到Docker Hub,如何从Docker Compose进行镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40047321/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com