Dockerfile

docker-compose.yml

wait

  • github
  • 主に docker-compose と一緒に使うコマンド。他のコンテナのポートが開くのを待つのに使える
  • wait などを使わずに depends_on で依存を指定したときに保証されることはポートが開いていることではなく、あくまでコンテナが起動していることまで

MySQL

$ cat schema.sql
USE demo;
CREATE TABLE users (
  id bigint PRIMARY KEY
);

$ docker run \
    -itd \
    -p 3306:3306 \
    -v $PWD:/docker-entrypoint-initdb.d/ \
    -e MYSQL_ROOT_PASSWORD=root \
    -e MYSQL_DATABASE=demo \
    mysql:8.0

$ mysql -uroot -proot -h127.0.0.1 -P3306 -e 'use demo; show tables;'

PostgreSQL

$ docker run \
    -itd \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=postgres \
    -e POSTGRES_DB=demo \
    postgres:15.0

$ psql postgresql://postgres:postgres@127.0.0.1:5432/diesel_demo -c 'CREATE TABLE posts (id SERIAL PRIMARY KEY)'

Redis

LocalStack

  • docker hub
  • AWS の各種サービスをローカルでモックできる
$ cat init_bucket.sh
set -xeu

export AWS_ACCESS_KEY_ID=test
export AWS_SECRET_ACCESS_KEY=test
aws --endpoint http://127.0.0.1:4566 s3 mb s3://test

$ docker run \
    -itd \
    -p 4566:4566 \
    -p 4571:4571 \
    -v $PWD:/docker-entrypoint-initaws.d/ \
    localstack/localstack

$ env \
    AWS_ACCESS_KEY_ID=test \
    AWS_SECRET_ACCESS_KEY=test \
    aws --endpoint http://127.0.0.1:4566 s3 ls

MinIO

$ docker run \
    -itd \
    -p 9000:9000 \
    -p 9001:9001 \
    -e MINIO_ACCESS_KEY=miniokey \
    -e MINIO_SECRET_KEY=miniokey \
    minio/minio server /data --console-address ":9001"

$ export AWS_ACCESS_KEY_ID=miniokey
$ export AWS_SECRET_ACCESS_KEY=miniokey

$ aws --endpoint http://127.0.0.1:9000 s3 mb s3://test
$ aws --endpoint http://127.0.0.1:9000 s3 ls
2022-03-19 22:10:25 test

Elasticsearch

$ docker run \
  -itd \
  -p 9200:9200 \
  -p 9300:9300 \
  -e "discovery.type=single-node" \
  docker.elastic.co/elasticsearch/elasticsearch:7.17.1

$ curl -X PUT localhost:9200/foo

MailHog

プラットフォームを指定して docker-compose.yml に書かれているイメージを全てダウンロード

for image in (cat docker-compose.yml | jc --yaml | jq -r '.[0] | .services[] | .image' | grep -v null); docker pull --platform linux/amd64 $image; end

Other

https://github.com/abiosoft/colima