如何在docker容器中安装composer?

pop*_*pop 2 virtual-machine laravel docker docker-compose laradock

我是 docker 和 docker-compose 的新手,我正在 docker 和 docker-compose 上使用 Laradock 开发一个 Laravel 项目,按照教程进行操作(但不确定这是否是引用这种情况的正确方法)。

\n\n

我想在这个环境中安装composer才能使用该 composer命令。

\n\n

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

\n\n
include(/var/www/laravel_practice/vendor/composer/../../database/seeds/AdminsTableSeeder.php): failed to open stream: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我用谷歌搜索这个脚本来找到一个可以解决该错误的解决方案,然后我找到了它。\n它说,“然后composer dump-autoload再次尝试播种”,所以我按照它操作,然后出现了这个错误。

\n\n
bash: composer: command not found\n
Run Code Online (Sandbox Code Playgroud)\n\n

因为我还没有将composer安装到docker-container中。\n我的docker现在的情况是这样的\n\xe3\x83\xbbworkspace
\n\xe3\x83\xbbmysql
\n\xe3\x83\xbbapache
\n\ xe3\x83\xbbphp-fpm
\n由于我还没有安装composer,所以我必须将其安装到 docker-container 中才能解决问题,但我不知道如何将其安装到 docker-container 中。

\n\n

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

\n\n

这是laradock/mysql/DockerfilelaravelProject/docker-compose.yml

\n\n
ARG MYSQL_VERSION=5.7\nFROM mysql:${MYSQL_VERSION}\n\nLABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"\n\n#####################################\n# Set Timezone\n#####################################\n\nARG TZ=UTC\nENV TZ ${TZ}\nRUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && chown -R mysql:root /var/lib/mysql/\n\nCOPY my.cnf /etc/mysql/conf.d/my.cnf\n\nCMD ["mysqld"]\n\nEXPOSE 3306\n
Run Code Online (Sandbox Code Playgroud)\n\n
version: \'2\'\nservices:\n  db:\n    image: mysql:5.7\n    ports:\n      - "6603:3306"\n    environment:\n      - MYSQL_ALLOW_EMPTY_PASSWORD=true\n      - MYSQL_DATABASE=laravelProject\n      - LANG=C.UTF-8\n    volumes:\n      - db:/var/lib/mysql\n    command: mysqld --sql-mode=NO_ENGINE_SUBSTITUTION --character-set-server=utf8 --collation-server=utf8_unicode_ci\n\n  web:\n    image: arbiedev/php-nginx:7.1.8\n    ports:\n      - "8080:80"\n    volumes:\n      - ./www:/var/www\n      - ./nginx.conf:/etc/nginx/sites-enabled/default\n\nvolumes:\n  db:\n\n
Run Code Online (Sandbox Code Playgroud)\n

pri*_*ath 9

您可以构建自己的映像并在 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
Run Code Online (Sandbox Code Playgroud)

我使用 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
Run Code Online (Sandbox Code Playgroud)