如何解决在 Docker PHP 容器中运行 Rsync
我将 PHP-apache 作为 Docker 容器运行,我需要在 PHP 脚本中使用 Rsync - 在 exec() 函数中。
我无法使其与“默认”Rsync 一起使用 - 我的意思是,安装在操作系统中的那个。我收到了 sh: 1: rsync: not found
。除了 ssh
、ls
、id
之外,几乎任何其他命令都一样 - 这些工作正常。
所以我在 Docker PHP 容器内安装了 Rsync,这是我的 Dockerfile:
FROM php:7.4-apache
LABEL maintainer="dev@chialab.io"
# Download script to install PHP extensions and dependencies
ADD https://raw.githubusercontent.com/mlocati/docker-php-extension-installer/master/install-php-extensions /usr/local/bin/
RUN chmod uga+x /usr/local/bin/install-php-extensions && sync
RUN chmod go+x /usr/local/bin
RUN apt-get update
RUN apt-get -y install rsync
RUN DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y \
curl \
git \
zip unzip \
&& install-php-extensions \
mysqli \
pdo_mysql \
zip \
&& a2enmod rewrite
它构建良好,PHP 容器运行正常,一切正常,但我仍然无法在 PHP 的 exec() 函数中使用 Rsync。我错过了什么吗?
有趣的是,容器的 rsync 在终端中运行正常:$ docker exec php rsync ...
附言我仍在学习 Docker,并且我已经与这个噩梦搏斗了一个多星期,并在此过程中解决了许多其他问题 - 仍然没有成功。我花了一段时间才用 sh: 1: rsync: permission denied
修复 RUN chmod go+x /usr/local/bin
或将 rsync 安装在容器中 - 它无法在开始时安装,但我通过在 RUN apt-get update
之前添加RUN apt-get -y install rsync
。
解决方法
您好? 要同步本地文件,您需要使用以下说明,这些说明由官方 docker 社区提供。
- 您需要在附加的 docker-sync.yml 文件中选择要设置的同步,单同步还是双同步。 https://docker-sync.readthedocs.io/en/latest/
或
- 只需使用带有
volumes:
参数的 docker-compose.yml。
https://docs.docker.com/compose/compose-file/compose-file-v3/#volumes
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。