2016-09-03 43 views
1

消失我試圖用以下Dockerfile擴展的Apache2泊塢窗容器:碼頭工人建立上:mkdir創建文件夾,但它們在運行時

FROM joomla:3-apache-php7  
RUN apt-get update 
RUN a2enmod ssl 

RUN printf "\nIncludeOptional /data/apache/conf-enabled/*.conf\n" >> /etc/apache2/apache2.conf 
RUN printf "include_path = '.:/data/php/conf.d'" > /usr/local/etc/php/conf.d/additional.ini 

RUN bash -c 'mkdir -pv /data/{apache/conf-enabled,php/conf.d}' 
RUN ln -s /etc/apache2/sites-enabled/ /data/apache/sites-enabled 

VOLUME ["/var/www/html/", "/data/apache/", "/data/php/"] 

EXPOSE 80 443 

ENTRYPOINT ["/entrypoint.sh"] 
CMD ["apache2-foreground"] 

當我嘗試啓動容器,這似乎:

[email protected]/# docker-compose up -d 
[email protected]/# docker-compose logs container 
apache2: Syntax error on line 223 of /etc/apache2/apache2.conf: Could not open config directory /data/apache/conf-enabled: No such file or directory 

當我註釋掉RUN printf "\nIncludeOptional /data/apache/conf-enabled/*.conf\n" >> /etc/apache2/apache2.conf並登錄到運行容器:

[email protected]:/# ls -la /data/** 
/data/apache: 
total 8 
drwxr-xr-x 2 root root 4096 Sep 3 11:39 . 
drwxr-xr-x 5 root root 4096 Sep 3 11:50 .. 

/data/php: 
total 8 
drwxr-xr-x 2 root root 4096 Sep 3 11:39 . 
drwxr-xr-x 5 root root 4096 Sep 3 11:50 .. 

創建的dirs會隨機消失,有時會啓用/ data/apache/conf-enabled目錄。有人能幫助我嗎?提前致謝。

編輯:

docker-compose.yml: 

version: '2' 

networks: 
    main: 
    driver: bridge 
    ipam: 
     driver: default 
     config: 
     - subnet: 172.18.0.0/16 
      gateway: 172.18.0.1 

services: 
    test: 
    build: docker/test 
    container_name: test 
    networks: 
     - main 
    volumes: 
     - /mnt/docker/test/joomla:/var/www/html 
     - /mnt/docker/test/apache:/data/apache/ 
     - /mnt/docker/test/php:/data/php/ 
     - /etc/letsencrypt:/etc/letsencrypt 
     - /var/lib/letsencrypt:/var/lib/letsencrypt 
     - /etc/localtime:/etc/localtime 
    links: 
     - mariadb:mariadb 
    environment: 
     - JOOMLA_DB_USER=test 
     - JOOMLA_DB_PASSWORD=test 
     - JOOMLA_DB_HOST=mariadb 
     - JOOMLA_DB_NAME=test 
+0

順便說一句:該目錄被成功創建: '步驟6:RUN的bash -c '的mkdir -pv /data/{apache/conf-enabled,php/conf.d}' --->運行中77a80dc8b5d3 MKDIR:創建目錄 '/數據' MKDIR:創建目錄 '/數據/阿帕奇' MKDIR:創建目錄 '/數據/阿帕奇/啓用的conf-' MKDIR:創建目錄 '/數據/ PHP的' MKDIR:創建目錄'/ data/php/conf.d'' – unrl

回答

1

有沒有真正足夠的數據有把握地回答這個問題,但最大的線索來自於事實,你確定這些是卷:

VOLUME ["/var/www/html/", "/data/apache/", "/data/php/"] 

我懷疑您的撰寫命令是從以前的運行中拉入這些文件夾。如果你在外部羣體上運行,這些卷可能會有所不同,具體取決於羣體運行你的容器的節點。要知道,我們需要查看您的docker-compose.yml,瞭解更多關於您運行這些命令的環境以及您正在運行的所有命令(stopdown完全不同)。

請注意,我不建議將卷創建爲Dockerfile的一部分,因爲它限制了構建於此的任何圖像無法修改這些文件夾(它們所做的任何更改通常會丟失),並且會創建匿名容器當您未在撰寫中定義音量位置時使用音量。這些匿名容器卷需要在移除時附加標誌(docker rm -v)或在每個唯一標識上手動添加docker volume rm


在回答編輯的問題:與撰寫卷裝入,這取決於什麼是在/ mnt /泊塢窗/測試/ apache中,容器內的目錄中的內容將完全由無論是從安裝覆蓋主人。如果您的容器在不同的主機(例如羣集)上運行,則每個主機在此位置可能具有不同的內容。如果目錄丟失,那將導致容器中的空目錄。

+0

@unrl我已根據您的撰寫文件更新了更詳細的答案。 – BMitch

+0

謝謝,我不得不在'/ data/apache/*'和'/ data/php/*'中指定每個文件夾作爲捲來訪問它們中的每一個文件夾。它的工作原理,但我不知道爲什麼。 – unrl

相關問題