Laravel файл composer .lock не обновляется на docker / docker -compose - PullRequest
0 голосов
/ 21 июня 2020

Я работаю над проектом Laravel. Я использую docker -compose / docker в качестве среды разработки.

Это мой файл docker -compose.yml.

version: '3'
services:
  apache:
    container_name: myaneat_apache
    image: webdevops/apache:ubuntu-16.04
    environment:
      WEB_DOCUMENT_ROOT: /var/www/public
      WEB_ALIAS_DOMAIN: myan.localhost
      WEB_PHP_SOCKET: php-fpm:9000
    volumes: # Only shared dirs to apache (to be served)
      - ./public:/var/www/public:cached
      - ./storage:/var/www/storage:cached
    networks:
      - myaneat-network
    ports:
      - "80:80"
      - "443:443"
  php-fpm:
    container_name: myaneat_php
    image: jguyomard/laravel-php:7.3
    volumes:
      - ./:/var/www/
      - ./ci:/var/www/ci:cached
      - ./vendor:/var/www/vendor:delegated
      - ./storage:/var/www/storage:delegated
      - ./node_modules:/var/www/node_modules:cached
      - ~/.ssh:/root/.ssh:cached
      - ./composer.json:/var/www/composer.json
      - ./composer.json:/var/www/composer.lock
      - ~/.composer/cache:/root/.composer/cache:delegated
    networks:
      - myaneat-network
  db:
    container_name: myaneat_db
    image: mariadb:10.2
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: myan
      MYSQL_USER: myan
      MYSQL_PASSWORD: secret
    volumes:
      - myaneat-data:/var/lib/mysql
    networks:
      - myaneat-network
    ports:
      - "33060:3306"
  elasticsearch:
    container_name: myaneat_es
    image: docker.elastic.co/elasticsearch/elasticsearch:6.5.1
    restart: always
    volumes:
      - es-data:/usr/share/elasticsearch/data
    networks:
      - myaneat-network
    ports:
      - "9200:9200"
  kibana:
    image: docker.elastic.co/kibana/kibana:6.5.1
    container_name: myaneat_kibana
    environment:
      - ./kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - "5601:5601"
    networks:
      - myaneat-network
networks:
  myaneat-network:
    driver: "bridge"
volumes:
  myaneat-data:
    driver: "local"
  es-data:
    driver: "local"

Я устанавливаю новый пакет выполняя следующую команду.

docker-compose exec php-fpm composer require calebporzio/sushi

Но обновляется только composer. json, но не composer .lock. Также пакет не загружается в папку vendor. Я работал раньше. Совершенно неожиданно это происходит.

Я пробовал следующее.

docker-compose exec php-fpm composer clearcache
docker-compose exec php-fpm composer clear-cache
docker-compose exec php-fpm composer dump-autoload
docker-compose exec php-fpm composer update --lock

Какова возможная root причина? Как исправить?

1 Ответ

1 голос
/ 21 июня 2020

Вы можете попробовать запустить обновление c для блокировки:

docker-compose exec php-fpm composer update --lock

Этот флаг задокументирован здесь

Что касается обновления .lock файл, вы можете найти информацию об этом здесь , вас интересует последний пункт.

Запуск composer обновление будет:

  1. Проверить composer. json

  2. Определить последние версии для установки в соответствии со спецификациями вашей версии

  3. Установить последние версии

  4. Обновить composer .lock, чтобы отразить последние установленные версии

...