docker中的可写文件夹权限

时间:2016-03-03 00:12:42

标签: docker docker-compose

我有一个docker设置,其中包含一些localhost网站。我使用Smarty作为我的模板引擎,它需要一个可写的templates_c文件夹。知道如何让这个文件夹可写吗?

错误如下:

PHP Fatal error:  Smarty error: unable to write to $compile_dir 
'/var/www/html/sitename.local/httpdocs/templates_c'. 
Be sure $compile_dir is writable by the web server user. in 
/var/www/html/sitename.local/httpdocs/libs/Smarty.class.php on 
line 1093

我知道这可以通过linux手动设置,但我正在寻找一个自动的 全球 解决方案,因为我有很多网站有这个问题

另外值得一提的是我使用的是一个非常干净的docker-compose.yml

php56:
  build: .
  dockerfile: /etc/docker/dockerfile_php_56
  volumes:
    - ./sites:/var/www/html
    - ./etc/php:/usr/local/etc/php
    - ./etc/apache2/apache2.conf:/etc/apache2/conf-enabled/apache2.conf
    - ./etc/apache2/hosts.conf:/etc/apache2/sites-enabled/hosts.conf
  ports:
    - "80:80"
    - "8080:8080"
  links:
    - mysql


mysql:
  image: mysql
  ports:
    - "3306:3306"
  environment:
    - MYSQL_ROOT_PASSWORD=MY_PASSWORD
    - MYSQL_DATABASE=YOUR_DATABASE_NAME
  volumes: 
    - ./etc/mysql:/docker-entrypoint-initdb.d

使用小型dockerfile进行基础知识:

FROM php:5.6-apache

RUN /usr/local/bin/docker-php-ext-install mysqli mysql
RUN    docker-php-ext-configure mysql --with-libdir=lib/x86_64-linux-gnu/ \
    && docker-php-ext-install mysql
RUN a2enmod rewrite

https://github.com/wesleyd85/docker-php7-httpd-apache2-mysql(但随后使用php 5.6)

1 个答案:

答案 0 :(得分:5)

我在这里用解决方案解决了同样的问题:Running docker on Ubuntu: mounted host volume is not writable from container

只需添加:

let appDelegate = UIApplication.shared.delegate as! AppDelegate
appDelegate.popAll()

到Dockerfile