如何加入docker composer php laravel

时间:2019-03-07 10:58:38

标签: laravel docker docker-compose composer-php

我了解laradock,但我需要自己完成所有步骤。

我要学习Laravel,最近我同时为自己开放了docker :)

现在我需要一起加入:
  docker-compose with images:
    -php:7.2.2-apache
    -mariadb
    -phpmyadmin / phpmyadmin
    -还有一些作曲家

laravel将在容器外部的主机上。

到目前为止,我已经从 php:7.2.2-apache 图像制作了自己的图像“ web_server” ,并在mod_rewrite内运行

FROM php:7.2.2-apache

RUN apt update && apt install mc -y && apt install composer -y  
RUN a2enmod rewrite

我的docker-compose.yml看起来像

version: '3'

services:
  db:
    image: mariadb
    volumes:
      - ./db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: "secretpswd"
      MYSQL_DATABASE: "test_db"
      MYSQL_USER: "my_user"
      MYSQL_PASSWORD: "secretpswd"
    ports:
      - "3306:3306"

  web:
    image: web_server
    container_name: php_web
    depends_on:
      - db
    volumes:
      - ./www:/var/www/html/
    ports:
      - "80:80"
    stdin_open: true
    tty: true

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    container_name: pma
    depends_on:
      - web
      - db
    environment:
     PMA_HOST: "db"
     PMA_PORT: 3306
     PMA_ARBITRARY: 1
    restart: always
    ports:
     - 8080:80
    volumes:
     - ./sessions:/sessions

现在我必须安装作曲家...
我有两个选择

    在这种情况下,我
  1. 使用Docker集线器中的composer/composer图像 不知道laravel和laravel如何使用它 因为laravel将在单独的web的控制之下 容器
  2. web_server映像内
  3. 安装作曲家,该映像由
    制成 php:7.2.2-apache图片

我已经尝试过,但开始收到错误

  

以下软件包具有未满足的依赖性:
  作曲家:取决于:   php-symfony-console(> = 2.5),但无法安装
              取决于:php-symfony-filesystem(> = 2.5)但不可安装
              取决于:php-symfony-finder(> = 2.4)但不可安装
              取决于:php-symfony-process(> = 2.4)但不可安装
              取决于:php-cli
              取决于:php-common,但无法安装
              取决于:php-json-schema但无法安装
              取决于:php-composer-ca-bundle(> = 1.0)但不可安装
              取决于:php-composer-ca-bundle(<2 ~~)但不可安装
              取决于:php-composer-semver(> = 1.0)但不可安装
              取决于:php-composer-semver(<2 ~~)但不可安装
              取决于:php-composer-spdx-licenses(> = 1.0)但不可安装
              取决于:php-composer-spdx-licenses(<2 ~~),但它不可安装
              取决于:jsonlint(> = 1.4)但不会被安装
              取决于:jsonlint(<2 ~~)但不会被安装
              取决于:php-cli-prompt(> = 1.0)但无法安装
              取决于:php-cli-prompt(<2 ~~)但无法安装
              取决于:php-psr-log(> = 1.0)但无法安装
              取决于:php-psr-log(<2 ~~)但无法安装
              推荐:git,但是它不会被安装E:无法纠正问题,您拿着损坏的软件包。命令   '/ bin / sh -c apt更新&& apt install mc -y && apt install composer   -y'返回了非零代码:100

是时候该寻求帮助了。

  1. 我应该使用哪种方式?

  2. 在单独的composer/composer容器的情况下如何使用它     在web_server容器中以及laravel将如何使用它

  3. php:7.2.2-apache映像中安装作曲家的情况下     如何解决这些错误

1 个答案:

答案 0 :(得分:2)

我认为最好的选择是为composer创建一个单独的docker容器。这样就不会在您的php apache容器中混入作曲家了。

您可以在docker-compose文件中添加以下行:

composer:
    restart: 'no'
    container_name:composer
    image: composer:latest
    working_dir: /var/www/html
    command: composer install -d /var/www/html
    volumes:
    - ./www:/var/www/html/

正在composer容器和您的php容器中同步该卷,因此vendor文件夹也将在两个容器之间同步。

这里有restart: no选项,因此当您运行docker-compose up时,composer容器仅启动一次,完成后将停止。

要运行作曲家安装,您可以使用:docker-compose run composer composer install

您还可以在下一行使用该命令,这样可以更快地安装composer。

(有关软件包的更多信息:https://github.com/hirak/prestissimo

command: >
      bash -c "composer global require hirak/prestissimo && composer install -d /var/www/html"