首页 > 解决方案 > Docker 组合构建 | 拉后的图像不起作用/为空

问题描述

我有一个 laravel 应用程序。

我使用 laravelsai 来生成 docker-compose.yml 文件。Sail 还在./vendor/laravel/sail/runtimes/8.0 .yml 文件中创建了一个 Dockerfile。

当我在本地机器上运行时docker-compose up,它将创建一个图像并运行一个容器。这个容器工作正常。

现在我docker-compose build用来创建一个我想与同事分享的图像。Docker 将成功创建镜像。我通过 Docker Desktop 将它推送到 HUB,我的同事可以拉它。

但是拉取的图像不起作用。当我通过 CLI 观察容器时,应用程序代码甚至不存在。它看起来像一个空图像。当我将它拉到本地机器上时也会发生同样的情况。

当我将图像推送到 docker 时,事情变得一团糟。有谁知道发生了什么?

根据要求,这里是重现的步骤:

将 laravel 帆添加到现有的 laravel 项目(如果您创建一个新的 laravel 项目,即 laravel 8+,则不需要执行此操作):

composer require laravel/sail --dev

然后按照 laravel 航行指南调用:

php artisan sail:install

上面的调用会生成一个docker-compose.yml

现在您可以使用docker-compose up.

这将创建一个图像并运行一个容器。如果您想将此图像推送到 HUB,则会出现问题。

这是我的docker-compose.yml

version: '3'
services:
    laravel.app:
        build:
            context: ./vendor/laravel/sail/runtimes/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: dockeruser/feedback_app:1.5
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
networks:
    sail:
        driver: bridge

标签: laraveldockerdocker-composelaravel-sail

解决方案


推荐阅读