如何在 PHP docker 镜像上安装 yarn 和 npm(symfony 4 项目)

Posted

技术标签:

【中文标题】如何在 PHP docker 镜像上安装 yarn 和 npm(symfony 4 项目)【英文标题】:How to install yarn and npm on a PHP docker image (symfony 4 project) 【发布时间】:2020-10-22 19:55:20 【问题描述】:

我正在做一个 symfony 4/posgresql 项目。我正在使用 docker 工具箱。

我需要在 symfony 上安装 webpack encore 包,但为了做到这一点,我需要将 yarn 和 npm 添加到我的项目中。有人告诉我应该在我的 php docker 容器上添加这些 2 安装,但我不知道要添加哪个命令(我是 linux/docker 初学者)。

这是我的 docker-compose.yaml :

 
services:
  database:
    image: postgres:11-alpine
    ports:
        - "5432:5432"
    volumes:
      - 'boeki_database:/var/lib/postgresql/data'
    environment:
      POSTGRES_PASSWORD: root
 
  database_pg_admin:
    image: dpage/pgadmin4
    ports:
        - "8001:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: root@root.com
      PGADMIN_DEFAULT_PASSWORD: root
       
  application:
    build:
      context: .
      dockerfile: ./docker/Dockerfile
    working_dir: /var/www/project
    ports:
        - "8000:80"
    volumes:
      - ./:/var/www/project:rw,cached
      - ./docker/http/000-default.conf:/etc/apache2/sites-enabled/000-default.conf:rw,cached
 
volumes:
  boeki_database:  

这是我的 Dockerfile:

 
RUN apt-get update && \
    apt-get install -y libpq-dev g++ zlib1g-dev libicu-dev vim git zip
 
#GD
RUN apt-get update && \
  DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
  libfreetype6-dev \
  libjpeg62-turbo-dev \
  libpng-dev \
  libzip-dev \
  poppler-utils
 
RUN rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-configure gd --with-freetype --with-jpeg && \
  docker-php-ext-install -j "$(nproc)" gd pdo_pgsql
 
RUN docker-php-ext-configure intl
RUN docker-php-ext-install pdo pdo_mysql intl zip opcache
 
RUN pecl install redis && echo "extension=redis.so" > /usr/local/etc/php/conf.d/docker-php-ext-redis.ini
 
RUN a2enmod rewrite
 
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

感谢您的帮助!

【问题讨论】:

正如我所说,我不知道 docker 是如何工作的,我也没有时间学习它是如何工作的。我只是寻求一些帮助。进行这个安装很难还是他只需要几行? 我尝试了一些命令,比如 curl -sS dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ echo "deb dl.yarnpkg.com/debian stable main" | tee /etc/apt/sources.list.d/yarn.list 和 apt-get update && apt-get install yarn,但没用。 我不知道从哪里开始,网上有很多信息,但我无法排序。 【参考方案1】:

根据https://classic.yarnpkg.com/en/docs/install#debian-stable,它提供了一些要遵循的命令,将以下内容添加到您的 dockerfile 应该 工作(免责声明:我对 docker 不是非常熟悉)

RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update && sudo apt-get install -y yarn

(-y 删除问题)

【讨论】:

谢谢伙计,这几乎是解决方案。这些命令有效: RUN curl -sS dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb dl.yarnpkg.com/debian stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get update && apt-get install -y yarn 必须删除所有“sudo”并在第三行将“apt”更改为“apt-get” @JamesSTANDBRIDGE 更新了我的答案以反映您的更改,以便对其他人有所帮助。很高兴它对你有用;o)

以上是关于如何在 PHP docker 镜像上安装 yarn 和 npm(symfony 4 项目)的主要内容,如果未能解决你的问题,请参考以下文章

docker 与 yarn

Yarn 国内加速,修改镜像源

如何使用官方 PHP Docker 镜像方法安装 php-redis 扩展?

创建使用 yarn 链接的项目的 docker 镜像

使用 Yarn 2 (Berry) 在 Docker 镜像中打包应用程序

在 Docker 文件上安装 yarn global