Amazon Lightsail で docker-composeを使った立ち上げ + MySQL + PhpMyAdmin
はじめに
Amazon Lightsail で docker-composeを使っている記事がなかったのと、データベース専用のインスタンスを立ち上げる以外の方法も試してみたいなと思ったので今回は試した方法と結果を書きました。
環境
- Amazon Linux 2
- Docker 19.03.6-ce <- 導入方法
- Docker-Compose 1.27.4 <- 導入方法
- Git 2.23.3 <- 導入方法
- Mysql 8.0.22 <- 導入方法
Mysqlの調整
Mysqlの初期化や再起動などでメモリ問題(mmap(137363456 bytes) failed; errno 12)などのエラーで起動しない場合があるので、Swap領域を確保します。これが一番てこずりましたw
swap領域を確保します
free
コマンドを実行すると設定していなければswapが0で出色されますので増やします。
// 空ファイル作成 sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 // 作成した空ファイルをswap領域に設定 sudo mkswap /swapfile // スワップ領域を有効化 sudo swapon /swapfile
MySQが落ちる トラブルシューティング Cannot allocate memory for the buffer pool - 長生村本郷Engineers'Blog
PhpMyAdmin設定
1 インスタンスの「⁝」をクリックして管理を押します。 2 ネットワーキングをクリックして、ファイアーウォールのルールを追加で、以下の条件を設定!
Docker-Composeを作成
参考コードを少し書き換えただけですが以下のように書いてください。
version: '3.8' services: mysql: image: mysql environment: - MYSQL_ROOT_PASSWORD=password <- amazon linux 2のroot@localhostのパスワード phpmyadmin: image: phpmyadmin/phpmyadmin environment: PMA_ARBITRARY: 1 PMA_HOST: mysql PMA_USER: root PMA_PASSWORD: password <- amazon linux 2のroot@localhostのパスワード restart: always links: - mysql:mysql ports: - '8080:80' volumes: - mysql-data:/path/to/data volumes: mysql-data: driver: local
Mysql の root_passwordの調べ方
下記コマンドを実行してMySQLのlogファイルを開く
sudo less /var/log/mysqld.log
開いたファイル内で下記の様な一行を見つける。
YYYY-MM-DDTHH:MM:SS.260490Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XXXXXXXXXXXX
ファイルに記載された行のXXXXXXXXXXXXの部分がrootユーザの初期パスワードとなる。
AWS EC2 AmazonLinux2 MySQL rootユーザの初期パスワードの確認方法 - Qiita
Docker-Compose実行
docker-compose up -d
phpmyadminへのアクセスは、インスタンスのパブリックipに8080ポートをつけるとアクセスができます。
public-ip:8080