【问题标题】:How do I install composer in container of docker?如何在 docker 容器中安装 composer?
【发布时间】:2019-03-21 02:46:19
【问题描述】:

我是 docker 和 docker-compose 的新手,我正在按照教程使用 Laradock 在 docker 和 docker-compose 上开发 Laravel 项目(虽然不确定引用这种情况是否正确)。

我想在这个环境中安装composer 以便能够使用composer 命令。

事实上,我想做种子以将数据放入我由php artisan make:migrate创建的数据库中,但出现了这个错误。

include(/var/www/laravel_practice/vendor/composer/../../database/seeds/AdminsTableSeeder.php): failed to open stream: No such file or directory

所以我用谷歌搜索了这个脚本以找到一个可以解决错误的解决方案,然后我找到了它。 它说,“Do composer dump-autoload 并再次尝试播种”,所以我跟着它然后出现了这个错误。

bash: composer: command not found

因为我还没有将 composer 安装到 docker-container 中。 我的码头工人现在的情况是这样的。 ・工作区
・mysql
・阿帕奇
・php-fpm
由于我还没有安装composer,所以我必须将它安装到docker-container中才能解决问题,但是我不知道如何将它安装到docker-container中。

那么谁能告诉我如何将composer 安装到 docker-container 中? 谢谢。

这里是laradock/mysql/Dockerfile 和laravelProject/docker-compose.yml。

ARG MYSQL_VERSION=5.7
FROM mysql:${MYSQL_VERSION}

LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"

#####################################
# Set Timezone
#####################################

ARG TZ=UTC
ENV TZ ${TZ}
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && chown -R mysql:root /var/lib/mysql/

COPY my.cnf /etc/mysql/conf.d/my.cnf

CMD ["mysqld"]

EXPOSE 3306
version: '2'
services:
  db:
    image: mysql:5.7
    ports:
      - "6603:3306"
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=true
      - MYSQL_DATABASE=laravelProject
      - LANG=C.UTF-8
    volumes:
      - db:/var/lib/mysql
    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION --character-set-server=utf8 --collation-server=utf8_unicode_ci

  web:
    image: arbiedev/php-nginx:7.1.8
    ports:
      - "8080:80"
    volumes:
      - ./www:/var/www
      - ./nginx.conf:/etc/nginx/sites-enabled/default

volumes:
  db:

【问题讨论】:

  • @prithajnath 谢谢你的建议。我修改了,现在怎么样了?
  • 好多了。您是否碰巧拥有用于创建映像/容器的相关 Dockerfile?
  • 你的基础镜像是什么——你能分享你的 Dockerfile 吗?
  • @prithajnath 我添加了有关它的信息。

标签: laravel docker docker-compose virtual-machine laradock


【解决方案1】:

您可以构建自己的映像并在 Docker 撰写文件中使用它。

FROM php:7.2-alpine3.8

RUN apk update
RUN apk add bash
RUN apk add curl

# INSTALL COMPOSER
RUN curl -s https://getcomposer.org/installer | php
RUN alias composer='php composer.phar'

# INSTALL NGINX
RUN apk add nginx

我使用 PHP alpine 镜像作为我的基础镜像,因为它是轻量级的,所以您可能需要自己安装其他依赖项。在你的 docker-compose 文件中

web:
  build: path/to/your/Dockerfile/directory
  image: your-image-tag
  ports:
    - "8080:80"
  volumes:
    - ./www:/var/www
    - ./nginx.conf:/etc/nginx/sites-enabled/default

【讨论】:

  • 非常感谢!!!!我有个问题。你说,“在 docker-compose 文件中编写这些代码”。是“docker-compose.yml”的意思吗?
  • @pop 是的。我的意思是 docker-compse.yml 文件
【解决方案2】:

你可以这样做:

FROM php:8.0.2-apache
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y mariadb-client libxml2-dev
RUN apt-get autoremove -y && apt-get autoclean
RUN docker-php-ext-install mysqli pdo pdo_mysql xml
COPY --from=composer /usr/bin/composer /usr/bin/composer

参数COPY --from= 应该可以解决您的问题。

【讨论】:

    【解决方案3】:
    FROM php:7.3-fpm-alpine
    RUN docker-php-ext-install pdo pdo_mysql
    RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
    
    RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
    RUN apk update
    RUN apk upgrade
    RUN apk add bash
    RUN alias composer='php /usr/bin/composer'
    

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 2016-03-16
      • 2016-02-28
      • 2021-09-08
      • 1970-01-01
      • 2022-07-13
      • 2018-12-16
      • 2020-01-17
      • 2019-06-03
      相关资源
      最近更新 更多