【问题标题】:install packages from docker-compose.yml into docker container将 docker-compose.yml 中的软件包安装到 docker 容器中
【发布时间】:2018-03-06 05:33:54
【问题描述】:

我是 docker 和 docker-compose 的初学者,我需要你的帮助。

我正在使用 docker-compose 制作 PHP-NGINX-PostgresSQL symfony 开发环境。

这里是:

web:
    image: nginx:1.13.5
    ports:
        - "80:80"
    volumes:
        - ./html:/html
        - ./site.conf:/etc/nginx/conf.d/default.conf
    links:
        - php
php:
    image: php:7-fpm
    volumes:
        - ./html:/html
    links:
       - postgres
postgres:
    image: postgres:9.6.5
    ports:
        - "5432:5432"
    environment:
        POSTGRES_PASSWORD: postgres

现在,我想将 php7.2-intl 安装到我的 php 容器中。所以我想执行类似的操作:

$ sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
$ sudo apt-get update
$ sudo apt-get install php7.2-intl

你能帮帮我吗?我真的被卡住了,而且我没有 Dockerfile 文件,只有一个 docker-compose.yml 文件。

【问题讨论】:

  • 为您的 php 映像使用 Dockerfile,然后只需将 build: . 替换为 image

标签: php postgresql symfony docker nginx


【解决方案1】:

要获得一个带intl扩展的PHP docker容器,需要扩展官方的PHP镜像。

为此,请在docker-compose.yml 中为您的PHP 图像声明使用您自己的Dockerfile

services:
  php:
    # Remove this line
    # image: php:7-fpm

    # Add this one instead
    build: './docker/php'
    # ...

然后,将以下Dockerfile 文件添加到docker/php 文件夹:

FROM php:7.1-fpm

RUN apt-get update && apt-get install -y \
        libicu-dev \
    && docker-php-ext-install \
        intl \
    && docker-php-ext-enable \
        intl

您现在可以运行 docker-compose build 以使用 Intl 扩展构建您的 PHP 容器。

一些注意事项:

  • 我更愿意明确说明我使用的是哪个 PHP 版本(此处为“7.1.x”),而不是您使用 php:7-fpm 定义的更通用的“7.x”。
  • 我更喜欢使用 PHP 官方镜像提供的 docker-php-ext-installdocker-php-ext-enable 命令实用程序(请参阅PHP image documentation 中的“如何安装更多 PHP 扩展”部分)。

【讨论】:

  • 非常感谢您的回答,您确实提供了帮助,尤其是在将 dockerfile 与 docker-compose 结合使用时。
猜你喜欢
  • 2017-01-22
  • 1970-01-01
  • 2020-07-26
  • 2022-09-23
  • 1970-01-01
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多