1

我是 docker 和 docker-compose 的新手,我正在按照教程在 docker 和 docker-compose 上使用 Laradock 开发 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

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

bash: composer: command not found

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

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

这是laradock/mysql/DockerfilelaravelProject/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:

4

3 回答 3

3

您可以构建自己的映像并在 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
于 2019-03-21T14:24:56.520 回答
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=应该可以解决您的问题。

于 2021-02-19T21:11:14.580 回答
0
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'
于 2021-06-15T23:50:09.580 回答