docker运行与docker – 组成:相同的图像,不同的结果
TL; DR使用相同的图像,我在运行docker run和docker-up时得到了不同的结果。
我正在使用官方的PHPdocker图像 ,我想安装一组扩展。 这是我的Dockerfile
:
FROM php:7.1.2-fpm # Install software and dependencies (for extensions) RUN apt-get update \ && apt-get install -qy \ libcurl4-gnutls-dev \ libpng-dev \ libicu-dev \ mcrypt \ libmcrypt-dev \ libxml2-dev \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng12-dev \ git \ nodejs # Install required PHP extensions RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-enable gd # Install and setup composer RUN curl -sS https://getcomposer.org/installer | php \ && mv composer.phar /usr/local/bin/composer # Cleanup tasks RUN apt-get clean
正如你所看到的,我正在尝试安装gd
库。 这实际上是从他们的例子。 在运行docker build
我看到它运行configuration和安装步骤(步骤3/5):
Step 1/5 : FROM php:7.1.2-fpm ---> 7191c638ed10 Step 2/5 : RUN apt-get update && apt-get install -qy libcurl4-gnutls-dev libpng-dev libicu-dev mcrypt libmcrypt-dev libxml2-dev libfreetype6-dev libjpeg62-turbo-dev libpng12-dev git nodejs ---> Using cache ---> 1f53f9211603 Step 3/5 : RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && docker-php-ext-install -j$(nproc) gd && docker-php-ext-enable gd ---> Using cache ---> 4598a07d9fca Step 4/5 : RUN curl -sS https://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer ---> Running in 89c18c9ddf40 All settings correct for using Composer Downloading... Composer (version 1.4.0) successfully installed to: /var/www/html/composer.phar Use it: php composer.phar ---> 059a1da3bb1a Removing intermediate container 89c18c9ddf40 Step 5/5 : RUN apt-get clean ---> Running in 66c9cb68f684 ---> f9543fa8b6e3 Removing intermediate container 66c9cb68f684 Successfully built f9543fa8b6e3
当我现在做一个普通的docker run
和ssh进入机器, gd
扩展是可用的:
$ php -m [PHP Modules] Core ctype curl date dom fileinfo filter ftp gd hash iconv json libxml mbstring mysqlnd openssl pcre PDO pdo_sqlite Phar posix readline Reflection session SimpleXML SPL sqlite3 standard tokenizer xml xmlreader xmlwriter zlib [Zend Modules]
现在,这里是有趣的部分:当我build立( docker build
)的形象,然后运行与docker-compose up
的容器,扩展没有安装。
我把它缩小到docker-compose up
问题,因为我做了很多不同的事情:
-
docker-compose build {servicename}
+docker run {image-ID}
– > extension availabe - 删除所有正在运行的容器和图像,删除所有docker构成图像(
docker-compose down
)- 尝试了远程registry,使用
dockerfile
,甚至build立图像,然后在docker-compose.yml
input本地图像 – >相同的结果
- 尝试了远程registry,使用
UPDATE
我docker-compose.yml
:
version: '2' services: php: # this is the variant with the registry image: registry.example.com/devops/php:base-php-fpm volumes: - './src:/code' - './config/php:/usr/local/etc/php' links: - mysql depends_on: - mysql nginx: image: nginx:1.10 ports: - "80:80" volumes: - './src:/code' - './config/nginx:/etc/nginx' depends_on: - php links: - php mysql: image: mysql ports: - "3306:3306"
原来,这是configuration文件到php的configuration文件夹的卷装入 – 只能在我的撰写文件中find。 它会覆盖PHP的自动生成的configuration。
其中一件事情让你整天忙于工作而没有提供最小的function
感谢您的帮助,伙计!