前編では、AWS LightsailでUbuntuの最小構成インスタンスを作成し、スワップの追加や日本語ロケールの設定までを行いました。後編では、DockerとMySQLコンテナのセットアップ、接続確認、トラブル対応までを解説します。
ステップ①:DockerとDocker Composeのインストール
LightsailのUbuntuはDocker非搭載のため、まずDocker本体とCompose(v1)をインストールします。
sudo apt install docker.io docker-compose
※ 最新版のdocker-compose(v2)をインストールしなくても、本記事の内容は動作します。v2を入れた場合は docker compose
というようにスペース付きでコマンドを実行してください。
ステップ②:MySQLコンテナ用ディレクトリと構成ファイルの準備
任意のディレクトリ(例:mysql-env)を作成し、その中に docker-compose.yml
ファイルを作成します。
以下のコマンドでエディタを開き、内容を手入力してください。
インデントを必ずつけてください。入力後は Ctrl + X
→ Y
→ Enter
で保存できます。
mkdir ~/mysql-env
cd ~/mysql-env
nano docker-compose.yml
設定例:
version: '3.8'
services:
mysql:
image: mysql:8
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: ****
MYSQL_DATABASE: testdb
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
****部分は任意で変更してください。
※ 本記事の設定は学習用のサンプルです。本番環境ではパスワード変更などセキュリティ対策を十分に行ってください。
ステップ③:コンテナの起動と確認
docker-compose up -d
起動状況の確認:
docker ps
STATUSの項目がUP~と表示されていたら起動完了です。
MySQLに接続してみます:
docker exec -it mysql mysql -uroot -p****
プロンプト(mysql>
)が出れば接続成功です。
****ここは作成したパスワードです。

ステップ④:トラブル対応と補足
◻︎yamlの構文エラー(インデントや文字化け)
コピー&ペーストではインデントや改行が崩れて yaml.parser.ParserError
が出ることがあります。手入力がお勧めです。
◻︎MySQLコンテナが起動するが接続できない
この症状は、実は メモリ不足が原因でMySQLが内部でクラッシュしているケースがあります。特にLightsail最小構成(512MB)では起こりやすいです。
次のようなログが繰り返されていたら、メモリ不足の可能性大です:
Initializing database files
Killed
Can't connect to local MySQL server...
この場合、スワップ追加で解消することがあります。
◻︎スワップを追加しても消えてしまう
再起動後にスワップが消えていた場合、/etc/fstab
への記述がない可能性があります。以下のように追記してください:
/swapfile none swap sw 0 0
追記後、再起動して sudo swapon --show
で有効化を確認します。
まとめ
AWS Lightsailの最小構成でDocker+MySQL環境を構築する一連の手順を紹介しました。
- Lightsailでの構築は低コストで始めやすい
- Dockerで環境を簡潔に構築・削除可能
- yamlの記述エラーやメモリ不足に注意
- スワップは永続化しておくと安心
開発環境や学習目的であれば、Lightsail+Dockerは非常に便利な構成です。ぜひお試しください。

▼ 前編はこちら:
LightsailでDocker+MySQL環境を最小構成で構築する(前編)