Как мне установить composer в контейнере докера? - PullRequest
0 голосов
/ 21 марта 2019

Я новичок в docker и docker-compose, и я разрабатываю Laravel-проект для docker и docker-compose с помощью Laradock, следуя инструкциям (хотя я не уверен, что это правильный путь или нет, чтобы ссылаться на эту ситуацию).

Я хочу установить 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. Состояние моего докера сейчас такое. · Рабочее место
· MySQL
· Апач
· PHP-FPM
Поскольку я не установил composer, я должен установить его в Docker-контейнер для решения проблемы, НО я понятия не имею, как установить его в Docker-контейнер.

Так может кто-нибудь сказать мне, как установить composer в Docker-контейнер? Спасибо.

здесь это 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:

1 Ответ

1 голос
/ 21 марта 2019

Вы можете создать свой собственный образ и использовать его в файле компоновки 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 в качестве базового, потому что он легкий, поэтому вам, возможно, придется самостоятельно устанавливать другие зависимости. В вашем файле 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
...