docker-compose up后清空卷文件夹

时间:2019-04-02 06:05:15

标签: docker docker-compose

我有一个dockerfile,可从composer加载一些东西到容器上的供应商文件夹中。现在,我想将容器上的供应商文件夹与我的主机环境链接起来。如果我使用docker-compose up启动服务,则供应商文件夹为空。我该怎么做才能将数据保存在容器中?

这是我的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:

感谢您的帮助

1 个答案:

答案 0 :(得分: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,以便在容器启动时(而不是在构建时)运行它。

我建议将这些命令放在安装脚本中并运行。看起来更干净,更容易理解。

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