我有这个docker app结构:
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-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
。那是为什么?
答案 0 :(得分:3)
看起来它正在尝试使用下一个命令
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
迫使码头工作者考虑包含下一个指针(RUN mkdir one
)