由docker构build的映像的引用与项目/目录名称绑定

我正在试图build立一个与Docker组合的Drupal环境,它有一定的作用。

然而,我已经把我的图像分成了一个基本的drupal图像和一个自定义的图层,configuration,模块等等。 基本的形象是从官方回购拉和增强了我需要的几个工具(例如composer php和一个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或者一个我自己控制的自定义名字,而不是基于目录名称。

我可以更改networking的名称,我可以控制代码(在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/* 

docker-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] 

您可以为您想在docker-compose.yml中构build的服务指定图像选项:

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

虽然在docker-compose.yml中只是为了构build真实服务的基本映像听起来是错误的。