2

I have docker compose yaml:

version: "3.8"
services:
  mysql:
    image: mysql/mysql-server:8.0.27
    container_name: javanotifications_mysql
    volumes:
      - ./persistence/mysql_db:/var/lib/mysql

and after running

docker compose up

I got

[Entrypoint] MySQL Docker Image 8.0.27-1.2.6-server
[Entrypoint] Starting MySQL 8.0.27-1.2.6-server
2022-04-22T23:45:52.061082Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.27) starting as process 1
2022-04-22T23:45:52.065609Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2022-04-22T23:45:52.077805Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-04-22T23:45:52.534236Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-04-22T23:45:52.803994Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1 is enabled for channel mysql_main
2022-04-22T23:45:52.804064Z 0 [Warning] [MY-013746] [Server] A deprecated TLS version TLSv1.1 is enabled for channel mysql_main
2022-04-22T23:45:52.808602Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2022-04-22T23:45:52.808689Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2022-04-22T23:45:52.818496Z 0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Invalid argument
2022-04-22T23:45:52.818539Z 0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?
2022-04-22T23:45:52.818778Z 0 [ERROR] [MY-010119] [Server] Aborting
2022-04-22T23:45:54.322278Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.27)  MySQL Community Server - GPL.

and container dies.

After cleaning "persistence" directory and repeating the process everything is the same

The only thing that comes to my mind is that it has some problems with /var/lib/mysql/mysql.sock, mysql doesn't like to have it (maybe) in mounted directory.

Then question comes, how to tell mysql to create it somewhere else in the container - beyond mounted directory /var/lib/mysql/?

Docker version 20.10.14, build a224086
MacBook Pro 16-inch, 2019, 2.4 GHz 8-Core Intel Core i9
macOS Big Sur version 11.6

--------- edit -----

So based on suggestion provided below by Sergio Santiago i've ended up with this solution, which works perfectly, eliminating this error:

version: "3.8"
services:
  mysql:
    image: mysql/mysql-server:8.0.27
    container_name: javanotifications_mysql
    ports:
      - "${MYSQL_PORT}:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_PASS}
      MYSQL_ROOT_HOST: "%"
    volumes:
      - ./mysql/my.cnf:/etc/my.cnf
      - ./mysql_db/${PROJECT_NAME}:/var/data

where mysql/my.cnf have this content

# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M

# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
skip-host-cache
skip-name-resolve
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

pid-file=/var/run/mysqld/mysqld.pid



# modified by US VVV
# NOTE: original localization of the my.cnf in the image is /etc/my.cnf
datadir=/var/data
2
  • What is your Docker Host? Windows? Linux? Mac...? Commented Apr 23, 2022 at 5:13
  • I've provided informations about environment Commented Apr 23, 2022 at 20:34

1 Answer 1

2

You can set it via mysqld configuration.

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock

If it doesn't work you can check this other similar question here

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.