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

Summary of commonly used SQL statements for creating MySQL tables

Recently, I have been working on a project and ne...

JavaScript Timer Details

Table of contents 1. Brief Introduction 2. setInt...

A brief discussion on the performance issues of MySQL paging limit

MySQL paging queries are usually implemented thro...

Solve the abnormal error when building vue environment with webpack

Table of contents First, configure package.json T...

Solution to the problem that Centos8 cannot install docker

Problem [root@zh ~]# [root@zh ~]# [root@zh ~]# yu...

Write a simple calculator using JavaScript

The effect is as follows:Reference Program: <!...

A brief talk about JavaScript parasitic composition inheritance

Composition inheritance Combination inheritance i...

Vue implementation counter case

This article example shares the specific code of ...

How to connect to a remote docker server with a certificate

Table of contents 1. Use scripts to encrypt TLS f...

Several ways to clear arrays in Vue (summary)

Table of contents 1. Introduction 2. Several ways...

Analysis and solution of abnormal problem of loading jar in tomcat

Description of the phenomenon: The project uses s...