天天看點

mysql安裝(docker)

mkdir /opt/mysql

vim /opt/mysql/Dockerfile

5.7

FROM mysql:5.7.26
EXPOSE 3306      

8.0

FROM mysql:latest
EXPOSE 3306      

建立檔案夾

mkdir /opt/mysql/var/lib/mysql -p

vim /opt/mysql/docker-compose.yml

version: '3.6'
services:
  mysql: 
    image: v-mysql:5.7
    container_name: mysql
    network_mode: "host"
    build: 
      context: .
      dockerfile: Dockerfile
    environment: 
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_USER: 'test'
      MYSQL_PASS: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"
    restart: always
    command: 
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes: 
      - "./var/lib/mysql:/var/lib/mysql"
      - "./etc/my.cnf:/etc/my.cnf"
      - "./docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/"
    ports:
      - "3306:3306"      

不用Dockerfile時

version: '3.6'
services:
  mysql: 
    image: mysql:5.7.26
    container_name: mysql
    network_mode: "host"
    environment: 
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_USER: 'test'
      MYSQL_PASS: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"
    restart: always
    command: 
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
    volumes: 
      - "./var/lib/mysql:/var/lib/mysql"
      - "./etc/my.cnf:/etc/my.cnf"
      - "./docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/"
    ports:
      - "3306:3306"      
version: '3.6'
services:
  mysql: 
    image: v-mysql:8.0
    container_name: mysql
    network_mode: "host"
    build: 
      context: .
      dockerfile: Dockerfile
    environment: 
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_USER: 'test'
      MYSQL_PASS: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: "no"
    restart: always
    command: 
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    volumes: 
      - "./var/lib/mysql:/var/lib/mysql"
      - "./etc/my.cnf:/etc/my.cnf"
      - "./docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d/"
    ports:
      - "3306:3306"      

mysql配置檔案

mkdir /opt/mysql/etc

vim /opt/mysql/etc/my.cnf

[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8      

/docker-entrypoint-initdb.d/init.sql

sql腳本(略)

build和啟動

cd /opt/mysql

docker-compose build

docker-compose up -d

docker-compose down

docker-compose restart

進入容器

docker exec -it mysql /bin/bash