Docker-compose后的空卷文件夹

问题描述 投票:0回答:1

我有一个dockerfile,它从容器中的vendor文件夹中的composer加载一些Stuff。现在我想将容器上的供应商文件夹与我的主机环境相关联。如果我使用docker-compose启动服务,则vendor文件夹为空。我该怎么做才能将数据保存在容器上?

这是我的dockerfile:

FROM php:7.3.3-apache-stretch
RUN apt-get update && \
apt-get install -y --no-install-recommends nano \
git \
openssh-server

RUN curl -s https://getcomposer.org/installer | php && \
echo "{}" > composer.json && \
php composer.phar require slim/slim "^3.0" && \
chown -R www-data. .

VOLUME /var/www/html/vendor

在这里我的docker-compose.yml:

version: '3.2'
services:
  slim:
    build:
      context: ./slim
    ports:
      - "1337:1337"
    networks:
      - backend
    volumes:
      - ./slim/vendor:/var/www/html/vendor
networks:
  backend:

谢谢您的帮助

docker docker-compose
1个回答
1
投票

你看到的是预期的行为。

如果您希望在主机上填充并提供供应商文件夹,那么您必须在映射发生后运行安装,而不是相反。

这个命令:

curl -s https://getcomposer.org/installer | php && \
echo "{}" > composer.json && \
php composer.phar require slim/slim "^3.0" && \
chown -R www-data. .

应该成为您的ENTRYPOINT或CMD,以便在容器启动时(而不是在构建时)运行它。

我建议将这些命令放在安装脚本中并运行它。理解它会更清晰,更容易理解。

希望这会有所帮助,但如果您需要更多信息,请告诉我。

© www.soinside.com 2019 - 2024. All rights reserved.