1

I'm building MYSQL image on docker with Dockerfile. I need help, because I have this problem: Authentication plugin 'caching_sha2_password' cannot be loaded

Aman Aggarwal's solution is worked for me, but I need write it on my custom my.cnf and I try to rewrite my.cnf default with it, but I get a error when I do docker build:

COPY failed: stat /var/lib/docker/tmp/docker-builder204357196/my.cnf: no such file or directory

This is my custom my.cnf:

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
default_authentication_plugin = mysql_native_password
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Custom config should go here
!includedir /etc/mysql/conf.d/

And this is my Dockerfile:

# Indicates that the mysql image will be used as the base image.
FROM mysql

#Try copy my.cnf on this path /etc/mysql/
COPY my.cnf /etc/mysql/my.cnf

#Try only to restart mysql (not container)
RUN service mysql restart

My structure of folders:

proyectos(folder)
  ->build_docker
      ->Dockerfile
      ->my.cnf
PiP
  • 13
  • 5

1 Answers1

0

From the Docker documentation:

The COPY instruction copies new files or directories from <src> and adds them to the filesystem of the container at the path <dest>
.
.
.
The <dest> is an absolute path, or a path relative to WORKDIR, into which the source will be copied inside the destination container.

You are specifying the destination filename, rather than simply the destination directory. Note also that restarting the MySQL service is unnecessary. The service starts when the container is started, not at build-time, so you should just need:

# Indicates that the mysql image will be used as the base image.
FROM mysql

#Try copy my.cnf on this path /etc/mysql/
COPY my.cnf /etc/mysql/
SiHa
  • 7,830
  • 13
  • 34
  • 43