Mr *_*enn 4 docker docker-compose
我正在尝试使用 docker-compose 创建一个 docker 容器,它在本地文件系统上安装一个卷(对于容器的 /var/www/html ),然后添加一个名为 Maps 和 chowns 的目录,chmods 是 www-data,以便网络服务器可以将文件写入其中。
我尝试了几种方法,使用如下所示的entrypoint.sh脚本:
Dockerfile
FROM php:5.6-apache
COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf
RUN a2enmod rewrite headers
RUN service apache2 restart
COPY entrypoint.sh /entrypoint.sh
RUN chmod 0755 /entrypoint.sh
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml({} 中的内容仅来自 .env 文件)
version: '2'
services:
webserver:
build: ./docker/webserver
image: web
ports:
- "8080:80"
volumes:
- ./web:${APACHE_DOC_ROOT}
links:
- db
environment:
- HTTP_ROOT=http://${DOCKER_HOST_IP}:${DOCKER_HOST_PORT}/
- PHP_TMP_DIR=${PHP_TMP_DIR}
- APACHE_LOG_DIR=${APACHE_LOG_DIR}
- APACHE_DOC_ROOT=${APACHE_DOC_ROOT}/
- SERVER_ADMIN_EMAIL=${SERVER_ADMIN_EMAIL}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
Run Code Online (Sandbox Code Playgroud)
入口点.sh
#!/bin/sh
mkdir /var/www/html/maps
chown www-data /var/www/html/maps
chgrp www-data /var/www/html/maps
exec "$@"
Run Code Online (Sandbox Code Playgroud)
我也尝试过不使用任何entrypoint.sh内容,只需将其添加到composer.yml中(在环境键之后):
command: bash -c "mkdir /var/www/html/maps && chown www-data /var/www/html/maps && chgrp www-data /var/www/html/maps"
Run Code Online (Sandbox Code Playgroud)
但是这两种方法似乎都没有在 docker-compose 日志中给出错误,除了
webserver_1 退出,代码为 0
小智 5
不确定您是否仍然遇到这个问题,但添加这个也许会对您有所帮助。我的意思是,它解决了我的问题 - 在容器上运行的 PHP 脚本没有写入权限。
RUN usermod -u 1000 www-data
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助。
| 归档时间: |
|
| 查看次数: |
30464 次 |
| 最近记录: |