gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 18:56:12 25 4
gpt4 key购买 nike

我有这个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-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。这是为什么?

最佳答案

Looks like it's trying to execute apt-get with the next coming command, which is RUN mkdir /var/run/sshd. Why is that?



由于前一个 \命令末尾有 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考虑包括下一个Directove( RUN mkdir one)的多行。

关于docker - Docker-compose尝试一次执行多个RUN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34133476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com