我正在尝试使用docker compose建立一个drupal环境,它在某种程度上有效。
然而,我已将我的图像分割成基础drupal图像和顶部的自定义图层,包括我的配置,模块等。基本图像是从官方仓库中提取的,并使用我需要的一些工具进行增强(例如编辑器和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 base的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]
答案 0 :(得分:1)
您可以为要在docker-compose.yml中构建的服务指定图像选项:
drupal:
build: ./docker/drupal
image: reponame_drupal # or whatever you like
虽然在docker-compose.yml中使用它只是为真实服务构建基本图像听起来不对。