はじめに
コピペで使える docker-compose 記載例集です。
更新履歴
- 2023.07.19 SQLServerの記載内容を一部更新。Wordpressを追加。
- 2021.01.27 SQLServerの記載を修正。WSL2上で実行時のエラー対策。
- 2020.11.11 SQLServerを追加
使い方
- Mac, Windows 双方とも、空のディレクトリを作成する。
-
docker-compose.yml
という名前のファイルを新規作成する。 - 記載例集に載っている記載例をコピー&ペーストして保存する。
- 上記フォルダをカレントディレクトリにして、Macならターミナル、WindowsならPowerShellかコマンドプロンプトを開く。
-
docker-compose up
を実行。
Macでターミナルを開く方法
https://qiita.com/yamagh/items/02608e97be22c85cefaa 参照。
WindowsでPowerShellを開く方法
エクスプローラの「ファイル」メニューからPowerShellを開くことができる。
記載例集
MySQL
version: '3'
services:
# MySQL
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: mysql
MYSQL_DATABASE: appdb
volumes:
- ./db/data:/var/lib/mysql
ports:
- 3306:3306
バージョン指定は8.0にしていますが、5.5、5.7等でもOKです。
接続ID/Passwordは、root/mysqlになります。また、初期作成されるデータベース名がappdbになります。
変更したい場合は、environmentの各項目を修正してください。
localhost:3306
にアクセスすれば接続できます。
docker-compose.ymlがあるフォルダにdbフォルダが自動的に作成され、この中にMySQLのデータが入ります。
このフォルダの中身を消去するとDBを初期化できます(downしている時に消去してください)
jupyterLab
version: '3'
services:
lab:
image: jupyter/datascience-notebook
environment:
- JUPYTER_ENABLE_LAB=yes
ports:
- "8888:8888"
volumes:
- ./work:/home/jovyan/work
notebookよりもlabのほうが使い勝手が良いと思います。また、ホームにworkディレクトリをマウントさせています。
workの中にノートを作成していけば良いでしょう。
gcc
たまにめっちゃCのソースをコンパイルしたいときがある。
version: "3"
services:
gcc:
image: gcc
tty: true
volumes:
- ./src:/src
tty: true
を書いておかないとすぐexitしてコンテナが終了してしまいます。
コンテナは起動だけしておいて、あとからゆっくりCLIでアタッチしましょう。
SQLServer
SQLServerもdockerで構築できるようになりました。
version: '3'
services:
# SQLServer
db:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: Your_Password
volumes:
- ./db/mssql:/var/opt/mssql
ports:
- 1433:1433
MySQLと同様、/ver/opt/mssql
にデータベースに関するデータが一式入ります。
全削除すればDBを初期化できますし、このディレクトリをそのままコピーすれば環境の移動もOKです。
(もちろんdownしている時にやってください)
2021.01.27 追記
上記docker-compose.ymlをWSL2上のDokcerで実行するとエラーで起動しません。
参考:https://stackoverflow.com/questions/59886014/permission-denied-when-persisting-a-container-of-mcr-microsoft-com-mssql-server
マウントするボリュームを /var/opt/mssql
ではなく /var/opt/mssql/data
にすると起動します。
version: '3'
services:
# SQLServer
db:
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
ACCEPT_EULA: Y
MSSQL_SA_PASSWORD: Your_Password
volumes:
- ./db/mssql/data:/var/opt/mssql/data
ports:
- 1433:1433
2023.07.19 追記
環境変数で設定するSAのパスワードは、追記現在ではMSSQL_SA_PASSWORD
という名称が推奨され、旧来の名称は非推奨になっているようです。なので記事のenvironmentを修正しています。
参考:https://learn.microsoft.com/ja-jp/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&pivots=cs1-bash
Wordpress
WordpressだってDocker一発で起動できます。
version: '3'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
db側とwordpress側の環境変数で設定しているDBのユーザー名、パスワードは一致させる必要があることだけ要注意です。手っ取り早くスクラップ&ビルドしたい場合にお勧めです。
終わりに
記載例集は順次増やしていく予定です。