E: Pakiet 'mysql-client' nie ma kandydata do instalacji w kompilacji obrazu php-fpm przy użyciu docker compose

90

Jestem dość nowy w dockerze, więc próbuję dowiedzieć się więcej na ten temat za pomocą projektu laravel, postępując zgodnie z tym samouczkiem:

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

Poprawiłem nieco plik Dockerfile z tego, co ma samouczek, ale nawet plik samouczka powoduje ten sam wynik.

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"]

Ale po uruchomieniu pojawia się następujący błąd 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

Czy coś mi brakuje?

Spodziewałem się, że to zadziała, ponieważ uruchamiam apt-get updateprzed instalacją mysql-client.

Dzięki.

surgiie
źródło

Odpowiedzi:

160

php: 7,3-fpm teraz używać Debiana 10 (Buster) jako podstawy obrazu i statków Buster z MariaDB, więc wystarczy wymienić mysql-clientze mariadb-clientpowinien to naprawić.

Yuan-Chen Ho
źródło
136

Jeśli nadal chcesz używać klienta mysql, nazywa się default-mysql-clientteraz.

Emil Johnsson
źródło
5
Miałem ten sam problem z obrazem Ruby Docker i zmieniłem go, aby załatwić sprawę default-mysql-client, dzięki!
Greg Hemphill
2
Używam PHP 7.2 i to rozwiązało mój problem. Dzięki.
Rolly
1
to jest odpowiedź ...!
dalusC
6

Miałem ten sam problem w php:7.1-apache. Wymiana mysql-clientze mariadb-clientpracuje dla mnie. Dziękuję Ci.

Patrick
źródło
2

php:7.2-apache wyzwala również błąd, ale rozwiązuję go za pomocą php:7.2.18-apache

Mohammed Yassine CHABLI
źródło