M1 macでcolima+dockerで環境構築した時に変なとこではまったのでメモ。
colima, docker, docker-composeをinstall
brew install docker docker-compose colima
colima start
colima start --profile x64 --arch x86_64 --cpu 8 --memory 8 --disk 128 --mount '~/workspace/my/colima/docker-compose:w' --dns 8.8.8.8
パッケージ構成
.
├── docker
│ ├── centos7
│ │ ├── Dockerfile
│ │ └── src
│ └── mysql
│ ├── Dockerfile
├── docker-compose.yml
└── server
はまった箇所
docker-compose.ymlの中身
version: '3'
services:
# ##### Go #####
golang:
container_name: sample-golang
build:
context: .
dockerfile: ./docker/centos7/Dockerfile
environment:
- TZ=Asia/Tokyo
volumes:
- ./server:/usr/local/src
privileged: true
ports:
- 8082:8082
security_opt:
- apparmor:unconfined
cap_add:
- SYS_PTRACE
tty: true
# ##### mysql #####
mysql:
image: mysql:5.7
build:
context: .
dockerfile: ./docker/mysql/Dockerfile
container_name: sample-mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=sample
- MYSQL_USER=admin
- MYSQL_PASSWORD=docker
- TZ=Asia/Tokyo
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --innodb-use-native-aio=0
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/mysql/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
- 3307:3306
docker-compose起動
$ docker-compose up -d
...
[+] Running 3/3
⠿ Network docker-compose_default Created 0.5s
⠿ Container sample-golang Started 4.5s
⠿ Container sample-mysql Started 4.5s
...
# mysqlコンテナに入ってみると...
$ docker exec -it sample-mysql bash
Error response from daemon: Container 5bfdd77c0ab0171658fabd4db2a33ef83890cf31487f50f05619b8e963d7d319 is not running
# ... Σ mysqlのコンテナが動いてない
ログを確認
chown: changing ownership of '/var/lib/mysql': Permission denied
chown: changing ownership of '/var/lib/mysql/private_key.pem': Permission denied
chown: changing ownership of '/var/lib/mysql/ca-key.pem': Permission denied
chown: changing ownership of '/var/lib/mysql/ibdata1': Permission denied
chown: changing ownership of '/var/lib/mysql/ib_logfile1': Permission denied
chown: changing ownership of '/var/lib/mysql/ib_buffer_pool': Permission denied
...
Permission deniedがもの凄い出てた...
色々と調べてみたら、docker-composeのmysqlの箇所に
「user:1000:1000」を追加するという対応策を見つけたので、追加して実行。
~~
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/mysql/sql:/docker-entrypoint-initdb.d
user: 1000:1000 # ← これを追加
ports:
- 3306:3306
- 3307:3306
~~
無事にmysqlコンテナは起動してくれてコンテナ内にも入れた。
$ docker exec -it sample-mysql bash
I have no name!@XXXXXXXXXX:/$ mysql -u admin -h localhost -p -P 3306 sample
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.39 MySQL Community Server (GPL)
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show tables;
Empty set (0.01 sec)
mysql> CREATE TABLE sample (id bitint autoincrement primary_key not null);
mysql> CREATE TABLE sample (id bigint not null primary key auto_increment, name varchar(128) not null);
Query OK, 0 rows affected (0.07 sec)
mysql> show tables;
+------------------+
| Tables_in_sample |
+------------------+
| sample |
+------------------+
1 row in set (0.01 sec)
ちなみに、
volumes:
- ./docker/mysql/data:/var/lib/mysql:rw
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf:rw
- ./docker/mysql/sql:/docker-entrypoint-initdb.d:rw
これでは解決しなかった。。。
参考URL