错误:服务“redis”未能build立。 当由docker-compose构buildredis图像时

我正在dockerizing一个基于nodejs,redis和mysql的应用程序。 我已经安装了Redis服务器,运行良好,但是我可以使用docker-compose.yml

$ docker-compose up --build Building redis Step 1/11 : FROM node:alpine ---> e079048502ec Step 2/11 : FROM redis:alpine ---> da2b86c1900b Step 3/11 : RUN mkdir -p /usr/src/app ---> Using cache ---> 28b2f837b54c Step 4/11 : WORKDIR /usr/src/app ---> Using cache ---> d1147321eec4 Step 5/11 : RUN apt-get install redis-server ---> Running in 2dccd5689663 /bin/sh: apt-get: not found ERROR: Service 'redis' failed to build: The command '/bin/sh -c apt-get install redis-server' returned a non-zero code: 127 

这是我的dockerfile。

Dockerfile:

 FROM node:alpine FROM redis:alpine # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies ## Install Redis ## RUN apt-get install redis-server ## Install nodejs on ubuntu ## RUN sudo apt-get update && wget http://nodejs.org/dist/v0.6.9/node-v0.6.9.tar.gz \ && tar -xvzf node-v0.6.9.tar.gz \ && cd node-v0.6.9 \ && ./configure && make && sudo make install \ && mkdir myapp && cd myapp \ && npm init \ && npm install express --save \ && npm install express \ && npm install --save path serve-favicon morgan cookie-parser body-parser \ && npm install --save express jade \ && npm install --save debug \ COPY package.json /usr/src/app/ COPY redis.conf /usr/local/etc/redis/redis.conf RUN npm install # Bundle app source COPY . /usr/src/app EXPOSE 3000 CMD [ "redis-server", "/usr/local/etc/redis/redis.conf", "npm", "start" ] 

这是docker-compose.yml文件

泊坞窗,compose.yml

 version: '2' services: db: build: ./docker/mysql # image: mysql:5.7 volumes: - db_data:/var/lib/mysql #- ./mysql:/docker-entrypoint-initdb.d # restart: always environment: MYSQL_ROOT_PASSWORD: root # MYSQL_DATABASE: cg_apiserver # MYSQL_USER: root # MYSQL_PASSWORD: root redis: build: ./docker/redis image: "redis:alpine" node: build: ./docker/node ports: - '3000:80' restart: always volumes: - .:/usr/src/app depends_on: - db - redis command: npm start volumes: db_data: 

似乎你已经试图合并两个Dockerfile在一个

首先,你的多个FROM在这里没有意义。 基本的概念是基于FROM只有一个基本的形象。 看到这个

其次,你有一个docker-compose看起来不错,但是看到Dockerfile,它显示你正在尝试在同一个图像中构build两个应用程序(redis和node app)。

所以从./docker/node/Dockerfile取出redis的东西:

 FROM node:alpine # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app # Install app dependencies ## Install nodejs on ubuntu ## RUN wget http://nodejs.org/dist/v0.6.9/node-v0.6.9.tar.gz \ && tar -xvzf node-v0.6.9.tar.gz \ && cd node-v0.6.9 \ && ./configure && make && sudo make install \ && mkdir myapp && cd myapp \ && npm init \ && npm install express --save \ && npm install express \ && npm install --save path serve-favicon morgan cookie-parser body-parser \ && npm install --save express jade \ && npm install --save debug \ COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY . /usr/src/app EXPOSE 3000 CMD ["npm", "start" ] 

使用这个./docker/redis/Dockerfile:

 FROM redis:alpine COPY redis.conf /usr/local/etc/redis/redis.conf # No need to set a custom CMD 

而且,我build议从redis(docker-compose.yml)中删除“image:”行。 没有必要:

  redis: build: ./docker/redis image: "redis:alpine" <---- 

编辑。 另外,您不需要apt-get update 。 我已经删除了这个sudo apt-get update &&