laravel - 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
解决方案
推荐阅读
- javascript - 为什么浏览器中“this”的绑定与 node.js 中的绑定不同?
- java - 如何将字符串对象保存到 ArrayList 并删除此 ArrayList 内的 HashMap
>? - flutter - 任何人都可以为我配置此代码的后退按钮吗?
- css - 如何使标题标签位于顶部和中心
- python - 如何在烧瓶和 sqlite3 中创建类似按钮的工作?
- swift - 如何使用 Swift 在任意位置创建文件?
- tkinter - 我正在尝试用 tkinter 制作一个琐事游戏
- c++ - 假设只有最后一行会有不包含 3 个值的错误,我如何使用流提取运算符读取文件
- java - 使用 Gson/Java 解析 Alpha Vantage API
- c# - 为什么我能够访问一个类,而无需为其指定包含命名空间 - C#