LoginSignup
0
0

【超速】サクッとmysql5.7サーバコンテナ

Last updated at Posted at 2023-12-26

稚拙ですが、mysql57用のdocker-compose.yamlを公開します。

docker-compose

$ docker-compose -v
docker-compose version 1.29.2, build unknown

ubuntuのVMでやってるので、公式サイトのバージョンとは一致しないようですが、そこまで古いバージョンでは有りません。

ファイルツリー構造

$ tree .
.
├── data
│   └── mysql
│       └── sample.sql
├── docker-compose.yaml
└── mysql
    └── my.cnf

3 directories, 3 files

data配下のsample.sqlは、DB初期化用のSQLdumpです。
CREATE DATABASEとか、CREATE TABLEが書いてあるもの。

yamlファイル

docker-compose.yaml
version: '3.9'
services:
  db:
    container_name: db
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      - "./mysql/my.cnf:/etc/mysql/conf.d/my.cnf"
      - "./data/mysql:/docker-entrypoint-initdb.d"
    environment:
      TZ: Asia/Tokyo
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: hoge
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    networks:
      - infra_default
    restart: always

networks:
  infra_default:
    external: true

data配下をマウントしてます。
docker-entrypoint-initdb.dディレクトリにsqlファイルを置くことで、コンテナ起動時にインポートしてくれます。
my.cnfもコンテナに送り込むことで、文字コードをutf-8に修正します。

起動

docker-compose.yamlがある階層で実行します。

docker-compose up --build

停止はCtrl + cとかで止めてます。(止め忘れるので。)

コマンド実行時に、以下のようなエラーが出た場合は…。

ERROR: Network infra_default declared as external, but could not be found. Please create the network manually using `docker network create infra_default` and try again.

ネットワークを作ってあげると、うまくいきます。

docker network create infra_default

bridgeネットワークができます。
コンテナ起動後は3306(mysql)のポートができます。

# netstat -nlpt
稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      468/systemd-resolve 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      31264/docker-proxy  
tcp        0      0 127.0.0.1:42171         0.0.0.0:*               LISTEN      798/containerd      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      778/sshd: /usr/sbin 
tcp6       0      0 :::3306                 :::*                    LISTEN      31271/docker-proxy  
tcp6       0      0 :::22                   :::*                    LISTEN      778/sshd: /usr/sbin 

おまけ

my.cnf

mysql/my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_bin
log-bin=/var/log/mysql/bin-log
server-id=1
query_cache_size=16M
max_allowed_packet=1G

[mysql]
default-character-set=utf8mb4

[client]
default-character-set=utf8mb4

[Service]
LimitNOFILE=5000
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0