How to run MySQL using docker-compose

How to run MySQL using docker-compose

Directory Structure

.
│ .env
│ docker-compose.yml
│
└─mysql
 ├─config
 │ my.cnf
 │
 └─data

The data directory under the mysql directory is the data directory, where the mysql data tables and binary log files are located. The .env file contains some variables that can be referenced in the docker-compose.yml file using ${variable_name} .

Of course, you can also put the mysql directory somewhere else, but here, for convenience, I put it directly in the same directory as the yml file.

.env File

MYSQL_ROOT_PASSWORD=root
MYSQL_ROOT_HOST=%
MYSQL_DIR=./mysql

MySQL configuration file my.cnf

[mysqld]
character-set-server=utf8mb4
default-time-zone='+8:00'
innodb_rollback_on_timeout='ON'
max_connections=500
innodb_lock_wait_timeout=500

If using the default configuration, this file can be omitted.

docker-compose.yml

version: '3'

services:

 mysql-db:
 container_name: mysql-docker # Specify the name of the container image: mysql:8.0 # Specify the image and version ports:
 - "3306:3306"
 environment:
 MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
 MYSQL_ROOT_HOST: ${MYSQL_ROOT_HOST}
 volumes:
 - "${MYSQL_DIR}/data:/var/lib/mysql" #Mount data directory - "${MYSQL_DIR}/config:/etc/mysql/conf.d" #Mount configuration file directory

Environment variables

  • MYSQL_ROOT_PASSWORD: This is self-explanatory, the password of the root user.
  • MYSQL_USER, MYSQL_PASSWORD: These two variables are optional and create a new user with superuser privileges on the database specified by the MYSQL_DATABASE variable.
  • MYSQL_DATABASE : Specifies a database to be created when the container starts.
  • MYSQL_ALLOW_EMPTY_PASSWORD : Set to yes to allow the root user to have an empty password. (Not recommended)
  • MYSQL_RANDOM_ROOT_PASSWORD: Set to yes to generate a random password for the root user when the container starts, and the password will be displayed to the standard output stream (GENERATED ROOT PASSWORD:......).
  • MYSQL_ONETIME_PASSWORD: literally means a one-time password, set for the root user, the password must be changed after the first login (only supported in versions 5.6 and above).

Running the container

Execute in the docker-compose.yml directory:

> docker-compose up

To run in the background, use docker-compose up -d .

Stop the container:

> docker-compose down

If it is running in the foreground, use: Ctrl + C to stop. Both methods will delete the container after stopping, and the up command must be used to start it next time.

Stop but do not delete the container:

> docker-compose stop

After stopping with the stop command, restart with the start command.

Summarize

The above is the method of running MySQL using docker-compose introduced by the editor. I hope it will be helpful to everyone. If you have any questions, please leave me a message and the editor will reply to you in time. I would also like to thank everyone for their support of the 123WORDPRESS.COM website! If you find this article helpful, please feel free to reprint it and please indicate the source. Thank you!

You may also be interested in:
  • Docker compose deploys SpringBoot project to connect to MySQL and the pitfalls encountered
  • Implementation of docker-compose deployment project based on MySQL8
  • Use dockercompose to build springboot-mysql-nginx application
  • A brief analysis of the problem of mysql being inaccessible when deployed with docker-compose
  • How to build an elk system using docker compose
  • Detailed process of building mongodb and mysql with docker-compose

<<:  How to change the database data storage directory in MySQL

>>:  vue-cropper component realizes image cutting and uploading

Recommend

10 tips for designing useful, easy-to-use web applications

Here are 10 tips on how to design better-usable w...

Two ways to install the Linux subsystem in Windows 10 (with pictures and text)

Windows 10 now supports Linux subsystem, saying g...

Linux file and user management practice

1. Display the files or directories in the /etc d...

Sample code for testing technology application based on Docker+Selenium Grid

Introduction to Selenium Grid Although some new f...

Summary of the differences between Vue's watch, computed, and methods

Table of contents 1 Introduction 2 Basic usage 2....

Kali Linux Vmware virtual machine installation (illustration and text)

Preparation: 1. Install VMware workstation softwa...

Solve the problem of the container showing Exited (0) after docker run

I made a Dockerfile for openresty on centos7 and ...

HTML table tag tutorial (11): horizontal alignment attribute ALIGN

In the horizontal direction, you can set the alig...

MySQL partitioning practice through Navicat

MySQL partitioning is helpful for managing very l...

VMware Workstation is not compatible with Device/Credential Guard

When installing a virtual machine, a prompt appea...

Introduction to building a DNS server under centos7

Table of contents 1. Project environment: 2: DNS ...

Detailed explanation of incompatible changes of components in vue3

Table of contents Functional Components How to wr...

Which loop is the fastest in JavaScript?

Knowing which for loop or iterator is right for o...