Docker-compose尝试一次执行多个RUN

我有这个docker应用程序结构:

docker-compose.yml

 lanti-debian-base: build: ./debian container_name: lanti-debian-base ports: - "8080:80" - "8081:443" - "8082:22" lanti-debian-web: build: ./web container_name: lanti-debian-web ports: - "8080:80" - "8081:443" - "8082:22" volumes: - "/home/core/www:/var/www:rw" 

debian/Dockerfile

 # Lanti/DebianBase # # VERSION 1.0.0 FROM debian:latest MAINTAINER Istvan Lantos <info@xxxxx.com> LABEL Description="This image is the base of the other app images in this project" Vendor="Istvan Lantos" Version="1.0" ENV TERM linux ENV DEBIAN_FRONTEND noninteractive RUN ln -sf /bin/bash /bin/sh && ln -sf /bin/bash /bin/sh.distrib RUN echo -e \ "deb http://httpredir.debian.org/debian stable main contrib non-free\n\ deb-src http://httpredir.debian.org/debian stable main contrib non-free\n\ deb http://security.debian.org stable/updates main contrib non-free\n\ deb-src http://security.debian.org stable/updates main contrib non-free\n\ deb http://httpredir.debian.org/debian stable-updates main contrib non-free\n\ deb-src http://httpredir.debian.org/debian stable-updates main contrib non-free" > /etc/apt/sources.list RUN apt-get -y update \ && time apt-get -y dist-upgrade \ && apt-get -y --force-yes install --fix-missing \ dialog \ apt-utils \ sudo \ supervisor \ openssh-server \ ### Start of OpenSSH setup RUN mkdir /var/run/sshd RUN mkdir /root/.ssh COPY root/.ssh/authorized_keys /root/.ssh/ RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile RUN echo -e '\ncd /root' >> /root/.bashrc ### End of OpenSSH setup ### Start of Last Cleanup RUN apt-get -y install -f; \ apt-get -y --purge autoremove; \ apt-get autoclean; \ apt-get clean; \ apt-get check ### End of Last Cleanup EXPOSE 80 443 22 CMD ["/bin/bash"] 

web/Dockerfile

 # Lanti/DebianWeb # # VERSION 1.0.0 FROM lemp_lanti-debian-base:latest MAINTAINER Istvan Lantos <info@xxxxx.com> LABEL Description="Nginx + PHP-FPM 7 through FastCGI" Vendor="Istvan Lantos" Version="1.0" RUN echo 'export PATH="$PATH:/usr/local/php7/bin:/usr/local/php7/sbin"' >> /etc/bash.bashrc RUN echo -e \ "deb http://nginx.org/packages/mainline/debian/ jessie nginx\n\ deb-src http://nginx.org/packages/mainline/debian/ jessie nginx" > /etc/apt/sources.list.d/nginx.list RUN echo -e \ "deb http://repos.zend.com/zend-server/early-access/php7/repos ubuntu/" > /etc/apt/sources.list.d/php.list RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 RUN apt-get -y update \ && time apt-get -y dist-upgrade \ && apt-get -y --force-yes install --fix-missing \ nginx \ php7-nightly ### Start of Nginx setup COPY etc/nginx/conf.d/default.conf /etc/nginx/conf.d/ COPY etc/nginx/conf.d/php.conf /etc/nginx/conf.d/ # NGINX WEBSERVER FILES RUN mkdir /var/www COPY usr/share/nginx/html/404.html /usr/share/nginx/html/ # forward request and error logs to docker log collector RUN ln -sf /dev/stdout /var/log/nginx/access.log RUN ln -sf /dev/stderr /var/log/nginx/error.log # Allow Nginx to access /var/run/php-fpm.sock RUN usermod -aG www-data nginx #VOLUME ["/var/cache/nginx"] ### End of Nginx setup ### Start of PHP 7 setup COPY usr/local/php7/etc/php.ini /usr/local/php7/etc/ COPY usr/local/php7/etc/php-fpm.conf /usr/local/php7/etc/ COPY usr/local/php7/etc/php-fpm.d/www.conf /usr/local/php7/etc/php-fpm.d/ RUN mkdir /var/log/php-fpm ### End of PHP 7 setup COPY etc/supervisor/conf.d/supervisord.conf /etc/supervisor/conf.d/ CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] 

这个Dockerfiles作为一个单一的Dockerfile执行完美,但是当我切入这两个Dockerfile,并试图用docker docker-compose up来执行它docker-compose up ,它只是在这一行失败了,升级,升级也搞砸了。 不安装软件包而不刷新dpkg:

 Building lanti-debian-base Step 1 : FROM debian:latest ---> 23cb15b0fcec Step 2 : MAINTAINER Istvan Lantos <info@xxxxx.com> ---> Using cache ---> fa6331df3cab Step 3 : ENV TERM linux ---> Using cache ---> e0dcbacf1ba3 Step 4 : ENV DEBIAN_FRONTEND noninteractive ---> Using cache ---> 579776fc2c0e Step 5 : RUN ln -sf /bin/bash /bin/sh && ln -sf /bin/bash /bin/sh.distrib ---> Running in 7ebf6bbe4cac ---> 886e36f8f807 Removing intermediate container 7ebf6bbe4cac Step 6 : RUN echo -e "deb http://httpredir.debian.org/debian stable main contrib non-free\ndeb-src http://httpredir.debian.org/debian stable main contrib non-free\ndeb http://security.debian.org stable/updates main contrib non-free\ndeb-src http://security.debian.org stable/updates main contrib non-free\ndeb http://httpredir.debian.org/debian stable-updates main contrib non-free\ndeb-src http://httpredir.debian.org/debian stable-updates main contrib non-free" > /etc/apt/sources.list ---> Running in 0088ad3ff110 ---> 9bfeed9678af Removing intermediate container 0088ad3ff110 Step 7 : RUN apt-get -y update && time apt-get -y dist-upgrade && apt-get -y --force-yes install --fix-missing dialog apt-utils sudo supervisor openssh-server RUN mkdir /var/run/sshd ---> Running in 20cc1d018913 Get:1 http://security.debian.org stable/updates InRelease [63.1 kB] Ign http://httpredir.debian.org stable InRelease Get:2 http://httpredir.debian.org stable-updates InRelease [136 kB] Get:3 http://httpredir.debian.org stable Release.gpg [2373 B] Get:4 http://httpredir.debian.org stable Release [148 kB] Get:5 http://security.debian.org stable/updates/main Sources [137 kB] Get:6 http://security.debian.org stable/updates/contrib Sources [1302 B] Get:7 http://security.debian.org stable/updates/non-free Sources [20 B] Get:8 http://httpredir.debian.org stable-updates/main Sources [2311 B] Get:9 http://security.debian.org stable/updates/main amd64 Packages [207 kB] Get:10 http://httpredir.debian.org stable-updates/contrib Sources [20 B] Get:11 http://httpredir.debian.org stable-updates/non-free Sources [20 B] Get:12 http://httpredir.debian.org stable-updates/main amd64 Packages [3619 B] Get:13 http://security.debian.org stable/updates/contrib amd64 Packages [2365 B] Get:14 http://httpredir.debian.org stable-updates/contrib amd64 Packages [20 B] Get:15 http://security.debian.org stable/updates/non-free amd64 Packages [20 B] Get:16 http://httpredir.debian.org stable-updates/non-free amd64 Packages [20 B] Get:17 http://httpredir.debian.org stable/main Sources [9149 kB] Get:18 http://httpredir.debian.org stable/contrib Sources [59.6 kB] Get:19 http://httpredir.debian.org stable/non-free Sources [119 kB] Get:20 http://httpredir.debian.org stable/main amd64 Packages [9035 kB] Get:21 http://httpredir.debian.org stable/contrib amd64 Packages [59.5 kB] Get:22 http://httpredir.debian.org stable/non-free amd64 Packages [101 kB] Fetched 19.2 MB in 25s (752 kB/s) Reading package lists... Reading package lists... Building dependency tree... Reading state information... 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. real 0m3.448s user 0m2.140s sys 0m1.021s Reading package lists... Building dependency tree... Reading state information... E: Unable to locate package RUN E: Unable to locate package mkdir E: Unable to locate package /var/run ERROR: Service 'lanti-debian-base' failed to build: The command '/bin/sh -c apt-get -y update && time apt-get -y dist-upgrade && apt-get -y --force-yes install --fix-missing dialog apt-utils sudo supervisor openssh-server RUN mkdir /var/run/sshd' returned a non-zero code: 100 

看起来它试图用下一个命令执行apt-get ,即RUN mkdir /var/run/sshd 。 这是为什么?

看起来它试图用下一个命令执行apt-get ,即RUN mkdir /var/run/sshd 。 这是为什么?

由于前一个RUN apt-get命令结尾的\

 apt-get -y --force-yes install --fix-missing \ dialog \ apt-utils \ sudo \ supervisor \ openssh-server \ <==== ### Start of OpenSSH setup RUN mkdir /var/run/sshd 

这迫使docker考虑包括下一个直播的多线( RUN mkdir one