首页 > 解决方案 > Dockerfile 不安装 RUN 依赖项

问题描述

码头工人-compose.yml

  version: '3.7'
  services:
    php:
      build:
        context: .
        dockerfile: Dockerfile
      image: php:7.3-rc-fpm
      container_name: php_7.3-rc-fpm
      volumes:
        - .:/var/www/app
      restart: unless-stopped
      working_dir: /var/www
      stdin_open: true
      tty: true

Dockerfile

FROM php:7.3-rc-fpm

RUN apt-get update && apt-get install -y \
  build-essential \
  mysql-client \
  locales \
  zip \
  vim \
  unzip \
  git \
  curl


# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip pcntl

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Copy existing application directory permissions
COPY --chown=www:www . /var/www

# Change current user to www
USER www

启动容器

docker-compose up -d

当我执行

docker-compose exec php bash

其次是

mysql --version

导致

bash: mysql: command not found

mysql-client丢失了,其他人也运行安装......

知道发生了什么吗?

....当我没有任何内容时,stackoverflow 需要更多详细信息来批准我的编辑......

标签: phpdockerdocker-composedockerfile

解决方案


image: php:7.3-rc-fpm应该被丢弃。

它告诉 docker-compose 从“php_7.3-rc-fpm”映像构建,而不是从使用 Dockerfile 构建的映像构建(这是一个优先级问题)。因此,您要求在 Dockerfile 中安装的任何内容均不可用,这很正常……

我确实测试过,如果你放弃这一行,docker-compose exec php bash后面的命令mysql --version会给你你所期望的。


推荐阅读