Docker-compose容器退出,代码为0

时间:2019-06-10 14:55:52

标签: docker-compose dock

我正在学习docker。每当我做docker-compose up时,我的memcached服务就会以代码0退出。我已经在这个问题上进行了搜索,发现这是因为service memcached start命令在后台运行,并且在此命令之后是没有进程在前台运行,因此如果没有进程在前台运行,则容器会立即退出。

下面是我的docker-compose.yml文件

version: "3"
services:
 app:
   build: .
   volumes: 
    - .:/project 
   command: 'rails s -b 0.0.0.0 -p 3000' 
   container_name: 'test_rails'
   ports:
    - 3000:3000
   depends_on:
     - database
 database:
  image: postgres:latest
  volumes:
    - ./data:/var/lib/postgresql/data
  environment:
    POSTGRES_USER: docker-user
    POSTGRES_PASSWORD: docker-password
    POSTGRES_DB: docker-db
 memcached:
  build:
   context: .
   dockerfile: Dockerfile.memcached
  command: bash -c "service memcached start"
  expose: 
   - "11211"
  tty: true 

下面是我的Dockerfile.memcached文件

FROM ubuntu:16.04 
RUN apt-get update
RUN apt-get install -y  memcached
RUN apt-get install -y libmemcached-tools

要解决此问题,可以使用多种黑客手段,例如使用tail -f /dev/null命令,这样它将永远在前台运行并且容器将永远不会退出,但对我来说似乎是黑客,而不是具体的解决方案。有人可以帮助我找到具体的解决方案,而不是破解此问题。

1 个答案:

答案 0 :(得分:0)

为什么不使用memcached https://hub.docker.com/_/memcached的官方图片

服务将类似于:

memcached:
    image: memcached:latest
    ports:
      - "11212:11211"