我試圖設置與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]
這當然有效。你會推薦做什麼不同的事情。使用命令構建映像並從撰寫文件中省略它?我喜歡將所有內容都放在腳本中的便利性,但我對碼頭工人是新手,所以我不知道這些缺陷。 – glaux
是的,也許可以從docker-compose.yml構建單獨的基礎映像,或者將該基礎映像與實際服務映像組合在一起。 Docker現在還支持[多階段構建](https://docs.docker.com/engine/userguide/eng-image/multistage-build/),但不確定這可能適合您的用例。 – Lauri