docker 容器内未创建符号链接

docker 容器内未创建符号链接

不幸的是,我无法在 docker 容器内创建此符号链接 (&& ln -s /db /var/www/html/blast/db/)。我错过了什么?

FROM ubuntu:16.04

# File Author / Maintainer
MAINTAINER Rafael Hernandez <https://github.com/fikipollo>

################## BEGIN INSTALLATION ######################
#Add the link to internal MRS service
RUN apt-get update \
    && apt-get -y install build-essential ruby ruby-dev ncbi-blast+ nginx php-fpm apache2-utils sudo wget csh fcgiwrap \
    && apt-get clean \
    && gem install sequenceserver \
    && gem install ncbi-blast-dbs

ENV ADMIN_USER=admin \
    ADMIN_PASS=supersecret \
    MAX_FILE_SIZE=300 \
    CPU_NUMBER=4

COPY configs/* /tmp/ 

ADD ./blast /var/www/html/blast

RUN mv /tmp/*.html /var/www/html/ \
    && mv /tmp/*.png /var/www/html/ \
    && mv /tmp/*.php /var/www/html/ \
    && cat /tmp/rules >> /etc/sudoers \
    && mv /tmp/default /etc/nginx/sites-available/ \
    && mv /tmp/entrypoint.sh /usr/bin/entrypoint.sh \
    && chmod +x /usr/bin/entrypoint.sh \
    && mv /tmp/admin_tools /usr/local/bin/admin_tools \
    && chmod +x /usr/local/bin/admin_tools \
    && mv /tmp/sequenceserver /etc/init.d/sequenceserver  \
    && chmod +x /etc/init.d/sequenceserver \
    && ln -s /db /var/www/html/blast/db/ \
    && chown www-data:www-data /var/www/html/* \
    && chmod 660 /var/www/html/*.* \
    && chmod o+w /var/www/html/blast/TmpGifs/ \
    && htpasswd -b -c /etc/nginx/.htpasswd admin supersecret

##################### INSTALLATION END #####################

ENTRYPOINT ["/usr/bin/entrypoint.sh"]

version: '2'
services:

    instance1-blast:
      build: .
      container_name: instance1-blast
      environment:
        - ADMIN_USER=admin
        - ADMIN_PASS=123
        - MAX_FILE_SIZE=50
        - CPU_NUMBER=5
      depends_on:
        - instance1-data
      volumes_from:
        - instance1-data
      ports:
        - "8094:80"
        - "8095:4567"

    instance1-vsftpd:
      image: fikipollo/vsftpd
      container_name: instance1-vsftpd
      environment:
        - FTP_USER=ftpuser
        - FTP_PASS=supersecret
        - ONLY_UPLOAD=YES
        - PASV_ENABLE=NO
        - FTP_HOME=/raw
        - UMASK=000
      depends_on:
        - instance1-data
      volumes_from:
        - instance1-data
      ports:
        - "8096:21"

    instance1-data:
      image: busybox
      container_name: instance1-data
      volumes:
        - /data/instance1-data/blast-data/db:/db
        - /data/instance1-data/blast-data/raw:/raw
        - /data/instance1-data/blast-data/tmp:/tmp

先感谢您。

答案1

&& ln -s /db /var/www/html/blast/db/

我没有在您的 Dockerfile 中看到:

/db /var/www/html/blast/db

正在创建目录。这两个目录在我看来都是非标准的,因此可能不存在于您的基础映像中。请尝试在创建符号链接的命令之前在 Dockerfile 中的某个位置添加此行:

运行 mkdir -p /var/www/html/blast/db && \ mkdir -p /var/www/html/blast/db

此外,我要检查的另一件事是 ls 命令是否有效并且可以“看到”这些目录,一旦您确认它们正在您的 Docker 映像文件系统中创建,它们也会反映在您的容器的文件系统中......

如果这不起作用,正如 Charles 已经要求的那样,请粘贴 docker build 命令的输出以及从该结果图像启动容器时得到的任何错误输出......

相关内容