Laravel 的 composer.lock 文件未在 docker/ docker-compose 上更新

Laravel's the composer.lock file is not updated on docker/ docker-compose

我正在做一个 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

可能的根本原因是什么?我该如何解决?

您可以尝试 运行 针对锁的更新:

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

此标志已记录 here

关于.lock文件的更新,你可能会找到相关信息here,你对最后一条感兴趣。

Running composer update will:

  1. Check composer.json

  2. Determine the latest versions to install based on your version specs

  3. Install the latest versions

  4. Update composer.lock to reflect the latest versions installed