LoginSignup
0
0

local にデータベースの host も client も無い時に docker でのちょろっとした確認方法

Last updated at Posted at 2020-06-21
  • Updated at 2020-07-12: Microsoft SQL Server, Presto を追加

手元の端末でちょろっとqueryの確認をしたいけど、そもそもローカルにclientすらインストールしていなかった時の不便を解決するための備忘録です。サーバ側のバージョン違いによる機能や挙動の確認は docker tag で制御する想定。

Postgresql

  • p15, mydb はご自由に変更を
  • docker exec をすぐに実行してしまうと docker run の初期化が終わっておらずエラーが出ることがあるが、深呼吸して時間をおいて実行すれば動きます
$ docker run --rm -d --name=p15 -e POSTGRES_USER=u -e POSTGRES_PASSWORD=p -e POSTGRES_DB=mydb postgres:15
$ docker exec -it p15 psql -h localhost -U u -d mydb
# inside docker
exit;
# outside docker
$ docker stop p15

MySQL

  • m8, mydb はご自由に変更を
docker run --rm -d --name=m8 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_DATABASE=mydb mysql:8
docker exec -it m8 mysql -h localhost mydb
# inside inside docker
exit;
# outside docker
docker stop m8

SQLite

  • 公式dockerイメージは見つからなかった。
  • 出力をカンマ区切りにするためには $'\t', に変更すればよい
docker run -it --rm nouchka/sqlite3 sqlite3 -header -separator $'\t'
sqlite> .q

Microsoft SQL-Server

# local
docker run --rm -d -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" \
   -p 1433:1433 --name sql1 \
   mcr.microsoft.com/mssql/server:2019-CU3-ubuntu-18.04

docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd \
   -S localhost -U SA -P "<YourStrong@Passw0rd>"

# SQLコマンド後に結果の表示に `go` とタイプする必要がある。 
# inside docker
1> exit

# local
docker stop sql1

Presto

docker run --rm -d -p 8080:8080 --name presto prestosql/presto
docker exec -it presto presto
# inside docker 
presto> exit

# local
docekr stop presto

Trino

docker run --rm -p 8080:8080 --name trino trinodb/trino
docker exec -it trino trino

# inside docker
trino> show catalogs;
trino> use tpch.sf100;
trino> show tables;
trino> show columns from customer;
trino> exit
0
0
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
0
0