DEV Community

box
box

Posted on • Edited on

MySQL + Docker: Initial Setup

Environment

  • Mac

    • CPU: Apple M1
    • OS: Sonoma 14.6.1
  • Docker Desktop

Dir Structure

dir-structure

* Drawn by mermaid.

graph TB;
    subgraph "top"
        A["docker-compose.yml"]
        B[".env"]
    end
Enter fullscreen mode Exit fullscreen mode

docker-compose.yml

services:
  mysql:
    image: mysql:8.0.39
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    ports:
      - "${MYSQL_HOST_PORT}:3306"
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:
Enter fullscreen mode Exit fullscreen mode

Structure

First, Define required attributes.

services:
  mysql:
    image: mysql:8.0.39
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
Enter fullscreen mode Exit fullscreen mode

Next, Mapping ports.

services:
  mysql:
    image: mysql:8.0.39
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    # new attribute.
    ports:
      - "${MYSQL_HOST_PORT}:3306"
Enter fullscreen mode Exit fullscreen mode

Finally, Make DB data persistent.

services:
  mysql:
    image: mysql:8.0.39
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    ports:
      - "${MYSQL_HOST_PORT}:3306"
    # new attribute.
    volumes:
      - db-data:/var/lib/mysql

# new element.
volumes:
  db-data:
Enter fullscreen mode Exit fullscreen mode

.env

MYSQL_HOST_PORT={host-port}
MYSQL_ROOT_PASSWORD={root-user-password}
Enter fullscreen mode Exit fullscreen mode

Docker

Create Container, Image, and Volume.

  1. Open the terminal.

  2. Move the current-dir to the location where docker-compose.yml is located.

  3. Execute docker compose create.

    docker compose create
    

Check the Version of MySQL.

  1. Start the container.

    docker compose start
    
  2. Check the name of the container.

    docker ps
    

    The Names column corresponds to it.

  3. Check the version in the container.

    docker exec <container-name> mysql -V
    

    For example, the following response is returned.

    mysql  Ver 8.0.39 for Linux on aarch64 (MySQL Community Server - GPL)
    
  4. Stop the container.

    docker compose stop
    

MySQL Workbench

Download.

  1. Download. workbench_download The version to be downloaded is 8.0.38. The M1 chip uses the ARM architecture, so the appropriate one is macOS (ARM, 64-bit), DMG Archive.

Add Connection.

  1. Start the container to connect to MySQL.

    docker compose start
    
  2. Open it and Click the PLUS button.
    Workbench_top

  3. The following dialog opens.
    workbench_setup-new-connection

    Enter any value for Connection Name, and update Port with .env.MYSQL_HOST_PORT.

  4. Click the Test Connection button.
    After entering .env.MYSQL_ROOT_PASSWORD, a connection test will be conducted.
    If successful, click the OK button to close this dialog.

  5. Stop the container.

    docker compose stop
    

Operate.

  1. Start the container.

    docker compose start
    
  2. Click the connection.
    workbench_top_after

  3. Enter .env.MYSQL_ROOT_PASSWORD if not saved in keychain.

  4. Operate until satisfied.
    workbench_main

  5. Stop the container.

    docker compose stop
    

Top comments (0)