我試圖用本地文件系統(容器的/ var/www/html)裝載卷的docker-compose創建docker容器,然後添加一個名爲maps和chowns的目錄,並將chmods添加到www-data中,以便Web服務器可以向其中寫入文件。Docker - 在容器啓動後執行mkdir,chown&chgrp
我試過幾個方法,使用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
泊塢窗,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}
entrypoint.sh
#!/bin/sh
mkdir /var/www/html/maps
chown www-data /var/www/html/maps
chgrp www-data /var/www/html/maps
exec "[email protected]"
我也試過,沒有任何的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-沒有錯誤比
webserver_1其他組成日誌退出,代碼爲0
謝謝@Fortis,你是正確的重寫原始Dockerfile中的CMD我沒有發現 - 但沒有使用入口點腳本的問題,因爲你建議當我然後從我的本地文件系統從容器中的/ var/www/html中,我們已經從/ var/www/html內部的Dockerfile所做的更改被覆蓋。在你的幫助下,我找到了一個使用入口腳本的答案 - 請看我的答案,並讓我知道你的想法也許... –