docker-compose
セットアップで公式のRedisイメージ https://hub.docker.com/_/redis/ を実行します。
myredis:
image: redis
そのイメージでdocker-composeを使用してredis-cli
を実行するにはどうすればよいですか?
次のことを試しましたが、接続できませんでした。
docker-compose run myredis redis-cli
> Could not connect to Redis at 127.0.0.1:6379: Connection refuse
画像のドキュメントには、実行する必要があると書かれています:
docker run -it --rm \
--link some-redis:redis \
redis \
sh -c 'exec redis-cli -h "$REDIS_PORT_6379_TCP_ADDR" -p "$REDIS_PORT_6379_TCP_PORT"'
これはどのようにdocker-compose run
に変換されますか?
それはオーバーライドします デフォルトCMD [ "redis-server" ]
:redis-cli
が実行されなかったコンテナでredis-server
を実行しようとしています。
ここで述べたように 、以下を使用してテストすることもできます:
docker exec -it myredis redis-cli
前述のように、docker-composeから このdocker/composeの課題212 :
rcli:
image: redis:latest
links:
- redis
command: >
sh -c 'redis-cli -h redis '
これも動作するはずです:
rcli:
image: redis:latest
links:
- redis
command: redis-cli -h redis
OP ivoba が確認するように( コメント内 )、最後のフォームが機能します。
その後:
docker-compose run rcli
ivobaは以下も追加します:
docker-compose run redis redis-cli -h redis
は、コンテナが実行されている場合にも機能します。
この方法では、別個のrcli
コンテナを宣言する必要はありません。
次のコマンドも使用できます。
docker-compose run myredis redis-cli -h myredis
@VonCが示唆するとおりにフォローしましたが、私の場合は、事前定義されたネットワークでredisを実行したため、動作しませんでした。
そのため、特定のネットワークでredisコンテナを実行する場合、network
フィールドをdocker-compose.yamlファイルで指定する必要があります
rcli:
image: redis:latest
links:
- redis
command: redis-cli -h redis
networks:
- <network redis run on>