我正在学习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
命令,这样它将永远在前台运行并且容器将永远不会退出,但对我来说似乎是黑客,而不是具体的解决方案。有人可以帮助我找到具体的解决方案,而不是破解此问题。
答案 0 :(得分:0)
为什么不使用memcached https://hub.docker.com/_/memcached的官方图片
服务将类似于:
memcached:
image: memcached:latest
ports:
- "11212:11211"