2015-05-30 12 views
8

mio contenitore Redis è definito come egli immagine standard nel mio docker_compose.ymlDocker-compose, comunque per specificare un file redis.conf?

redis: 
    image: redis 
    ports: 
    - "6379" 

Credo che sia con le impostazioni standard, come il legame con Redis a localhost ho bisogno di legarsi a 0.0.0.0, c'è comunque di aggiungere un file redis.conf locale per cambiare l'associazione e lasciare che docker-compose lo sappia?

grazie per qualsiasi trucco ...

risposta

20

Sì. Basta montare il redis.conf sopra il default con un volume:

redis: 
    image: redis 
    volumes: 
    - ./redis.conf:/usr/local/etc/redis/redis.conf 
    ports: 
    - "6379" 

In alternativa, creare una nuova immagine basata l'immagine Redis con il file conf copiato in su istruzioni complete sono a:. https://registry.hub.docker.com/_/redis/

Tuttavia, i Redis l'immagine si lega a 0.0.0.0 per impostazione predefinita. Per accedervi dall'host, è necessario utilizzare la porta che Docker ha mappato sull'host per te che trovi usando docker ps o il comando docker port, puoi quindi accedervi a localhost:32678 dove 32678 è la porta mappata. In alternativa, è possibile specificare una porta specifica su cui eseguire la mappatura nello docker-compose.yml.

Come sembra di essere nuovo in Docker, questo potrebbe avere un senso in più se si inizia usando i comandi Docker grezzi anziché iniziare con Compose.

+1

Grazie mille ... Sono stato attraverso comandi Docker aw prima ...' Ora sto imparando Componi ... Proverò entrambi i suggerimenti ... – erwin

+0

Ho provato a seguire la tua raccomandazione. Ma Redis non legge il mio file di configurazione e sembra caricare solo il suo predefinito conf; per esempio, ho richiesto una password all'interno del file conf, ma quando l'istanza è in esecuzione, non è richiesta la password. – Kousha

+0

@Kousha che dovrebbe funzionare, aprire una domanda separata in caso contrario. Dovrebbe essere semplice eseguire il debug attraverso l'esecuzione nel contenitore. –

11

vecchia questione, ma se qualcuno ancora voglia di farlo, è possibile con i volumi e comando:

command: redis-server /usr/local/etc/redis/redis.conf 
volumes: 
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf 
+0

Funzionerebbe se il contenitore fosse su un altro host? i volumi montano le directory _sul_l'host_, giusto? –

+0

Vale la pena notare che la configurazione redis consente solo le connessioni da 127.0.0.1 per impostazione predefinita, quindi se si desidera connettersi dall'host per scopi di test, è necessario modificare le opzioni. –

+0

Specificare un mapping assoluto del percorso in 'Volumi' è più sicuro, come questo:' volumi: - $ {PWD} /redis/redis.conf:/usr/local/etc/redis/redis.conf' –