【问题标题】:Laravel's the composer.lock file is not updated on docker/ docker-composeLaravel 的 composer.lock 文件未在 docker/docker-compose 上更新
【发布时间】:2020-10-11 08:04:28
【问题描述】:

我正在做一个 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。此外,该软件包也不会下载到供应商文件夹中。我以前工作过。出乎意料的是,这种情况发生了。

我尝试了以下方法。

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

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

【问题讨论】:

    标签: laravel docker docker-compose composer-php


    【解决方案1】:

    您可以尝试运行特定于锁的更新:

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

    这个标志记录在here

    关于.lock文件的更新,你可以在here找到相关信息,你对最后一个条款很感兴趣。

    运行作曲家更新将:

    1. 检查 composer.json

    2. 根据您的版本规格确定要安装的最新版本

    3. 安装最新版本

    4. 更新 composer.lock 以反映已安装的最新版本

    【讨论】:

    • 更新锁现在似乎可以工作了。我不知道为什么它一开始就不起作用。我也尝试了一些其他命令,例如在更新锁定文件之前清除缓存。但是每当我安装一个新包时,我必须手动运行“docker-compose exec php-fpm composer update --lock”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 2018-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    相关资源
    最近更新 更多