【问题标题】:Dockerise Laravel / VueJS applicationDockerise Laravel / VueJS 应用程序
【发布时间】:2018-08-10 12:27:07
【问题描述】:

我有一个想要 dockerise 的 laravel 应用程序。

我看过几个教程,比如: https://medium.com/@pierangelo1982/dockerize-an-existing-laravel-application-with-docker-compose-a45eb7956cbd

https://kyleferg.com/laravel-development-with-docker/

https://medium.com/@shakyShane/laravel-docker-part-1-setup-for-development-e3daaefaf3c

https://www.codementor.io/patrickfohjnr/developing-laravel-applications-with-docker-4pwiwqmh4

这是我用于开发的 Dockerfile:

FROM php:7.1.14-fpm

WORKDIR /app
COPY . /app

RUN apt-get update -y && apt-get install -y openssl zip unzip git npm \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
        libmagickwand-dev --no-install-recommends \
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \
&& docker-php-ext-install pdo pdo_mysql mbstring \
&& docker-php-ext-install zip \
&& docker-php-ext-install -j$(nproc) iconv mcrypt \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& touch ./resources/assets/less/_main_full/main.less \
&& apt-get purge --auto-remove -y g++ \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& composer install && php artisan key:generate && php artisan migrate:fresh  --seed \
&& npm cache clean -f && npm install -g n && n stable && npm install cross-env && npm install && npm run dev

有 1 件事我不明白:

我应该在容器中安装我所有的依赖项(composer install + npm install)吗?即使它使我制作了一个 1GB 的图像,对我来说似乎也是必要的,而且构建时间很长,但是很多教程都没有这样做。它是如何工作的?

注意:我不想使用 laradock,因为目标是学习和实践 Docker。

【问题讨论】:

  • 我不安装镜像本身的依赖,只安装必要的构建工具。然后在容器中我将安装 composer 和 npm 依赖项。很可能您最终会更改/更新composer.jsonpackage.json,因此最好不要将所有内容直接安装到映像中并节省构建时间/映像大小。
  • 其实我也是 docker 新手。但是在我的日常使用中,我将依赖项安装在容器内。为什么,因为在容器中我们已经定义并安装了一个 php 版本。依赖项应该基于容器内的 php 对吗?如果我在主机上运行,​​它可能有不同的php版本。
  • @btl composer.json 不会改变,你的意思是 composer.lock 吗?但是,如果不每次执行 composer install 等,你就不能直接部署你的容器……我错了吗?
  • 是的,容器应该是具有所有必要依赖项的隔离环境。在主机上运行而不是在容器内运行肯定会遇到麻烦
  • 这取决于您的部署策略。我已经在两个版本之间安装了新包,并删除了过时/弃用的包,所以composer.json 确实发生了变化。

标签: php laravel docker npm


【解决方案1】:

在里面建立依赖是没有意义的。只需调用容器的命令行并运行依赖项设置

docker exec -it container_name bash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-08
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2021-09-05
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多