6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

これだけ知っとけ!docker-composeスニペット集

Last updated at Posted at 2020-10-16

はじめに

コピペで使える docker-compose 記載例集です。

更新履歴

  • 2023.07.19 SQLServerの記載内容を一部更新。Wordpressを追加。
  • 2021.01.27 SQLServerの記載を修正。WSL2上で実行時のエラー対策。
  • 2020.11.11 SQLServerを追加

使い方

  1. Mac, Windows 双方とも、空のディレクトリを作成する。
  2. docker-compose.ymlという名前のファイルを新規作成する。
  3. 記載例集に載っている記載例をコピー&ペーストして保存する。
  4. 上記フォルダをカレントディレクトリにして、Macならターミナル、WindowsならPowerShellかコマンドプロンプトを開く。
  5. docker-compose upを実行。

Macでターミナルを開く方法

https://qiita.com/yamagh/items/02608e97be22c85cefaa 参照。

WindowsでPowerShellを開く方法

エクスプローラの「ファイル」メニューからPowerShellを開くことができる。
image.png

記載例集

MySQL

docker-compose.yml
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

docker-compose.yml
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のソースをコンパイルしたいときがある。

docker-compose.yml
version: "3"

services:
  gcc:
    image: gcc
    tty: true
    volumes:
      - ./src:/src

tty: trueを書いておかないとすぐexitしてコンテナが終了してしまいます。
コンテナは起動だけしておいて、あとからゆっくりCLIでアタッチしましょう。

SQLServer

SQLServerもdockerで構築できるようになりました。

docker-compose.yml
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 にすると起動します。

docker-compose.yml
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のユーザー名、パスワードは一致させる必要があることだけ要注意です。手っ取り早くスクラップ&ビルドしたい場合にお勧めです。

終わりに

記載例集は順次増やしていく予定です。

6
1
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
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?