gpt4 book ai didi

Docker - 在容器启动后执行 mkdir、chown 和 chgrp

转载 作者:行者123 更新时间:2023-12-02 20:34:23 28 4
gpt4 key购买 nike

我正在尝试使用 docker-compose 创建一个 docker 容器,它在本地文件系统上安装一个卷(用于容器的/var/www/html),然后添加一个名为 maps 和 chowns 的目录,chmods 是到 www -data,以便网络服务器可以将文件写入其中。

我尝试了几种方法,使用这样的 entrypoint.sh 脚本:

docker 文件

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

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}

入口点.sh

#!/bin/sh

mkdir /var/www/html/maps
chown www-data /var/www/html/maps
chgrp www-data /var/www/html/maps
exec "$@"

我也试过没有任何 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"

但是这两种方法在 docker-compose 日志中似乎都没有错误,除了

webserver_1 exited with code 0

最佳答案

不确定您是否仍然遇到这个问题,但也许添加这个会对您有所帮助。我的意思是,它解决了我的问题 - 在容器上运行的 PHP 脚本没有写入权限。

RUN usermod -u 1000 www-data

希望这会有所帮助。

关于Docker - 在容器启动后执行 mkdir、chown 和 chgrp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46059193/

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