如何从docker-compose在两个不同的端口上启动两个memcached实例?

时间:2017-11-01 16:05:04

标签: docker environment-variables docker-compose memcached

我想启动两个memcached的docker-compose服务。我正在为两个实例使用docker标准的memcached图像。 Memcached应​​该能够使用环境变量来改变它正在监听的端口,但它似乎不起作用。

我的docker-compose.yml

...
memcached-server:
    image: memcached
    environment:
      MEMCACHED_PORT: 11211
    ports:
      - 11311:11211
    networks:
      - my_net

memcached-server-lock:
    image: memcached
    environment:
      MEMCACHED_PORT: 11212
      MEMCACHED_CACHE_SIZE: 128
    ports:
      - 11312:11212
    networks:
      - my_net
...

容器正确启动但似乎没有拾取env变量:

0ae76227b72b        memcached                            "docker-entrypoint..."   17 seconds ago      Up 13 seconds       0.0.0.0:11311->11211/tcp mobidesk_memcached-server_1
ab3682361dad        memcached                            "docker-entrypoint..."   17 seconds ago      Up 12 seconds       11211/tcp, 0.0.0.0:11312->11212/tcp  mobidesk_memcached-server-lock_1

有人知道要使用哪些变量。或者是我错过了什么?

2 个答案:

答案 0 :(得分:0)

您无需更改memcache使用的docker端口,您可以这样设置:

memcached-server:
    image: memcached
    ports:
      - 11311:11211
    networks:
      - my_net

memcached-server-lock:
    image: memcached
    environment:
      MEMCACHED_CACHE_SIZE: 128
    ports:
      - 11312:11211
    networks:
      - my_net

无论如何,您使用的变量都可以。您不应该使用与Dockerfile EXPOSEd不同的端口。

答案 1 :(得分:0)

实际上,您不需要编辑.sh文件。足以直接在docker compose中使用“命令”选项:

  cache:
    image: memcached:latest
    command:
      - '-m 128'