E: Gói 'mysql-client' không có ứng viên cài đặt nào trong bản dựng hình ảnh php-fpm bằng cách sử dụng trình soạn thảo docker


82

Tôi còn khá mới với docker và vì vậy tôi đang cố gắng tìm hiểu thêm về nó bằng cách sử dụng dự án laravel, tôi đang làm theo hướng dẫn này:

https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose?comment=77842

Ive đã điều chỉnh Dockerfile một chút so với những gì hướng dẫn có nhưng ngay cả tệp hướng dẫn cũng gây ra kết quả tương tự.

FROM php:7.3-fpm

# Copy composer.lock and composer.json
COPY composer.lock composer.json /var/www/
# Install dependencies
RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \
    apt-get update && apt-get install -y mysql-client \


RUN npm install -g npm

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


# Install extensions
RUN docker-php-ext-install pdo pdo_mysql

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

# Add user for laravel application
RUN groupadd -g 1000 www
RUN useradd -u 1000 -ms /bin/bash -g www www

# Copy existing application directory contents
COPY . /var/www

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

# Change current user to www
USER www
# Set working directory
WORKDIR /var/www
# Expose port 9000 and start php-fpm server
EXPOSE 9000

CMD ["php-fpm"]

Nhưng tôi vẫn gặp lỗi sau khi chạy docker-compose up -d:

E: Package 'mysql-client' has no installation candidate
ERROR: Service 'app' failed to build: The command '/bin/sh -c curl -sL https://deb.nodesource.com/setup_10.x | bash - &&     apt-get update && apt-get install -y mysql-client     nodejs     build-essential     vim     git     curl' returned a non-zero code: 100

Tui bỏ lỡ điều gì vậy?

Tôi mong đợi điều này sẽ hoạt động vì tôi đang chạy apt-get updatetrước khi cài đặt mysql-client.

Cảm ơn.

Câu trả lời:


153

php: 7.3-fpm hiện sử dụng Debian 10 (Buster) làm hình ảnh cơ sở của nó và Buster đi kèm với MariaDB, vì vậy chỉ cần thay thế mysql-clientbằng mariadb-clientsẽ sửa được.


126

Nếu bạn vẫn muốn sử dụng máy khách mysql, nó sẽ được gọi default-mysql-clientngay bây giờ.


5
Tôi đã gặp vấn đề tương tự trên hình ảnh Docker Ruby và thay đổi để default-mysql-clientthực hiện thủ thuật, cảm ơn!
Greg Hemphill

2
Tôi đang sử dụng PHP 7.2 và nó đã khắc phục sự cố của tôi. Cảm ơn.
Rolly

1
đây là câu trả lời ...!
dalusC

6

Tôi đã có cùng một vấn đề trong php:7.1-apache. Thay thế mysql-clientbằng những mariadb-clienttác phẩm dành cho tôi. Cảm ơn bạn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.