通过docker容器从控制台应用程序连接到redis

时间:2017-10-11 23:30:55

标签: docker redis .net-core

我正在尝试从.net core 2.0 app连接redis。两者都在码头工人的容器中。

我检查过是否可以从这样的控制台应用程序连接到互联网,看起来很好;

public static void Main(string[] args)
{
    string  message = DownloadFile("http://foo.com");

    WriteLine(message);
    Console.ReadKey();
}

public static string DownloadFile(string remoteFilename)
{
    WebClient client = new WebClient();
    return client.DownloadString(remoteFilename);
}

我可以通过Redis桌面管理器使用localhost:6379和密码连接到redis容器。

但我无法像这样连接;

public static void Main(string[] args)
{
    db.StringIncrement("visit");
    Console.WriteLine("Hello. This is your " + db.StringGet("visit") + "th visit");

    Console.ReadKey();
}

public static String redisConString = "localhost:6379,password=s7MAdAOqvvINvJZY";

//singleton redis connection instance
public static ConnectionMultiplexer _redisConnection;
public static ConnectionMultiplexer redisConnection
{
    get
    {
        if (_redisConnection == null)
        {
            _redisConnection = ConnectionMultiplexer.Connect(redisConString);
        }
        return _redisConnection;
    }
}

public static IDatabase _db;
public static IDatabase db
{
    get
    {
        if (_db == null)
        {
            _db = redisConnection.GetDatabase();
        }
        return _db;
    }
}

1 个答案:

答案 0 :(得分:2)

对于在同一主机上运行且能够进行通信的容器,需要将它们分组到docker网络下。您需要做的是创建一个docker网络,并将这些容器连接到网络。

docker network create --driver bridge my-network
docker run --network=my-network image1 ...
docker run --network=my-network image2 ... 

有关详细信息,请查看networking