如何在docker的容器中安装 composer?

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

因为我没有在docker-container中安装 composer。 我的docker的状况现在是这样的。 ・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:
    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
    image: arbiedev/php-nginx:7.1.8
    ports:
      - "8080:80"
    volumes:
      - ./www:/var/www
      - ./nginx.conf:/etc/nginx/sites-enabled/default
volumes:
    
5 个评论
pop
@prithajnath 谢谢你的建议。我修改了它,现在怎么样了?
好多了。你是否碰巧有你用来创建镜像/容器的相关Docker文件?
你的基本图像是什么,你能分享你的Docker文件吗?
pop
@prithajnath 我添加了相关信息。
laravel
docker
docker-compose
virtual-machine
laradock
pop
pop
发布于 2019-03-21
3 个回答
prithajnath
prithajnath
发布于 2021-06-16
已采纳
0 人赞同

你可以建立你自己的镜像并在你的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文件中

build: path/to/your/Dockerfile/directory image: your-image-tag ports: - "8080:80" volumes: - ./www:/var/www - ./nginx.conf:/etc/nginx/sites-enabled/default
pop
非常感谢您!!!!我有一个问题。你说,"在docker-compose文件中写入这些代码"。它是指 "docker-compose.yml "吗?
@pop 是的。我是指docker-compse.yml文件
Luiz Felipe Lima
Luiz Felipe Lima
发布于 2021-06-16
0 人赞同

你可以做这样的事情。

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=应该可以解决你的问题。

Leonel Kahameni
Leonel Kahameni
发布于 2021-06-16
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