gpt4 book ai didi

使用带有 nginx rsync 的 docker 的 Symfony 缓存权限

转载 作者:行者123 更新时间:2023-12-03 22:04:12 25 4
gpt4 key购买 nike

遵循@sveneisenschmidt 的解决方法,它在容器中使用 rsync 来加速 OSX 上的 Symfony: https://forums.docker.com/t/how-to-speed-up-shared-folders/9322/15

我似乎让 Symfony 以这种方式运行,但我遇到了 Web 服务器的权限问题,我不确定如何在 Docker 中解决。

我可以在我的 php-fom 实例中通过 CLI 清除缓存 (cache:clear --env=prod --no-debug)

但问题是当我通过 app_dev.php 查看 Symfony 时,nginx 似乎无法写入缓存/日志目录:

Unable to write in the cache directory (/app/app/cache/dev)

我对 rsync 如何适应权限感到困惑,但似乎 nginx 需要比它更多的权限。关于如何解决这个问题的任何想法?

docker_compose.yml

# Web server
nginx:
container_name: insight_nginx
build: docker/nginx
ports:
- "80:80"
links:
- php
- sync:sync
volumes_from:
- sync

# Data alias
data:
container_name: insight_data
build: docker/data/.

# Database
db:
container_name: insight_db
build: docker/db
ports:
- 3306:3306
volumes:
- "./.data/db:/var/lib/mysql"
- ./db-dump:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD: root

# Application server
php:
container_name: insight_php
build: docker/php-fpm
external_links:
- insight_db:docker-mysql
environment:
DB_HOST: docker-mysql
# Syncing
volumes_from:
- sync
links:
- sync:sync

# Synchronization
### Symfony rsync workaround from here: https://forums.docker.com/t/how-to-speed-up-shared-folders/9322/15
sync:
container_name: insight_sync
build: docker/sync
command: "lsyncd -delay 1 -nodaemon -rsync /src /app"
volumes:
- /app
- "./:/src"
working_dir: /src
stdin_open: true
tty: true

nginx/Dockerfile

FROM nginx:latest

COPY symfony3.conf /etc/nginx/conf.d/symfony3.conf

#RUN usermod -u 1000 www-data
#RUN chown -R www-data:www-data /app/cache
#RUN chown -R www-data:www-data /app/logs

php-fpm/Dockerfile

FROM pvlltvk/ubuntu-trusty-php-fpm-5.6

RUN apt-get install -y \
php5-curl \
php5-sybase \
freetds-dev \
libxml2-dev

ADD freetds.conf /etc/freetds/freetds.conf

RUN echo 'alias sf="php /app/app/console"' >> ~/.bashrc

#RUN chmod -R 0777 /tmp/symfony/logs
#RUN chmod -R 0777 /tmp/symfony/cache

#ADD start.sh /start.sh
#RUN chmod +x /start.sh

WORKDIR /app

同步/Dockerfile

FROM ubuntu:16.04

RUN PACKAGES="\
rsync \
lsyncd \
" && \
apt-get update && \
apt-get install -y $PACKAGES && \
apt-get autoremove --purge -y && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

#RUN rm -rf /src/app/cache/* \
# rm -rf /src/app/logs/* \
# sudo chmod +R 777 /src/app/cache /src/app/logs

#RUN chmod -R 0777 ./app/logs
#RUN chmod -R 0777 ./app/cache

最佳答案

CMD 指令允许您设置一个默认命令,只有在您运行容器时没有指定命令时才会执行该命令。 *

RUN 执行您在新层中提供的命令并创建新图像。**

尝试

CMD chown -R www-data:www-data/var/www && nginx

* http://goinbigdata.com/docker-run-vs-cmd-vs-entrypoint/

** https://til.codes/docker-run-vs-cmd-vs-entrypoint/

关于使用带有 nginx rsync 的 docker 的 Symfony 缓存权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39128654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com