2017-09-13 29 views
0

我試圖設置與docker撰寫的drupal環境,並且它在某種程度上工作。由docker構建的映像的引用與項目/目錄名稱相關

不過,我已經把我的圖像分成了一個基本的drupal圖像和一個自定義圖層,配置,模塊等等。基礎圖像從官方回購中拉出來,並用我需要的幾個工具(例如composer和php擴展)進行增強。

我對定製層dockerfile看起來像這樣(前幾行):

FROM reponame_drupal 

COPY sites /var/www/html/sites/ 
RUN chown -R www-data:www-data /var/www/html/sites/default/files 

(我知道,我應該改變與入口點腳本的權限)

這工作,因爲一切被放置在名爲'repo-name'的目錄中,但是這看起來非常脆弱。如果我因爲某些原因更改了我的項目名稱,我的dockerfiles中斷。

我非常想寫FROM drupal或我自己控制的自定義名稱,而不是基於目錄名稱。

我可以將網絡名稱更改爲我可以在代碼中控制的內容(在docker-compose.yml中)?這裏最好的做法是什麼?


爲Drupal的基地dockerfile看起來是這樣的:

FROM drupal:7.56-apache 

# Install packages 
RUN rm /bin/sh && ln -s /bin/bash /bin/sh && \ 
    apt-get update && apt-get install --no-install-recommends -y \ 
    curl \ 
    wget \ 
    vim \ 
    git \ 
    unzip \ 
    libmcrypt-dev 

# Install PHP extensions 
RUN docker-php-ext-install \ 
    mcrypt 

# Install Composer 
RUN curl -sS https://getcomposer.org/installer | php && \ 
    mv composer.phar /usr/local/bin/composer && \ 
    ln -s /root/.composer/vendor/bin/drush /usr/local/bin/drush 

# Install Drush 
RUN composer global require drush/drush:8 && \ 
    composer global update 

# Clean repository 
RUN apt-get clean && rm -rf /var/lib/apt/lists/* 

泊塢窗,compose.yml看起來是這樣的:

version: '3.3' 

services: 

    mysql: 
    image: mysql/mysql-server:5.7 
    [additional settings] 

    drupal: 
    build: ./docker/drupal 

    customlayer: 
    build: ./docker/customlayer 
    ports: 
     - "8090:80" 
    depends_on: 
     - mysql 
    restart: always 

    phpmyadmin: 
    image: phpmyadmin/phpmyadmin:latest 
    [additional settings] 

回答

1

您可以爲服務指定圖像選項,您想要在docker-compose.yml內建立:

drupal: 
    build: ./docker/drupal 
    image: reponame_drupal # or whatever you like 

雖然在docker-compose.yml中只是爲了構建真實服務的基本映像聽起來不對。

+0

這當然有效。你會推薦做什麼不同的事情。使用命令構建映像並從撰寫文件中省略它?我喜歡將所有內容都放在腳本中的便利性,但我對碼頭工人是新手,所以我不知道這些缺陷。 – glaux

+0

是的,也許可以從docker-compose.yml構建單獨的基礎映像,或者將該基礎映像與實際服務映像組合在一起。 Docker現在還支持[多階段構建](https://docs.docker.com/engine/userguide/eng-image/multistage-build/),但不確定這可能適合您的用例。 – Lauri

相關問題