docker 容器中缺少文件夹

Folder missing inside docker container

提问人:user3523406 提问时间:3/22/2018 更新时间:3/22/2018 访问量:2017

问:

我写了这个docker-compose项目。docker-compose.yml如下所示:

version: '3.1'

services:
  db:
    image: mysql
    restart: always
    environment:
      - MYSQL_DATABASE=mgsv
      - MYSQL_USER=mgsv_user
      - MYSQL_PASSWORD=mgsvpass
      - MYSQL_ROOT_PASSWORD=mysql123
    volumes:
      - ./mysql:/docker-entrypoint-initdb.d

  www:
    build: ./mGSV 
    restart: always
    ports:
      - 8080:8080

Dockerfile 基于 PHP 容器,如下所示。

FROM php:5-apache

RUN apt-get update  && apt-get install -y --no-install-recommends \
                openjdk-7-jdk \
                maven  \
        git \
        && rm -rf /var/lib/apt/lists/*

RUN git clone https://github.com/qunfengdong/mGSV.git

# Move the folder 'mgsv' to DocumentRoot of Apache web server. By default, the DocumentRoot of Apache is /var/www/ (speak to the system administrator to know the exact DocumentRoot).
RUN cd /var/www/html/mGSV \
    && mkdir tmp \
    && chmod -R 777 tmp

RUN cd /var/www/html/mGSV && sed -i.bak "s|'gsv'|'mgsv_user'|" lib/settings.php \ 
    && sed -i.bak "s|$database_pass = ''|$database_pass = 'mgsvpass'|" lib/settings.php \
    && sed -i.bak "s|cas-qshare.cas.unt.edu|localhost|" lib/settings.php

RUN cp /var/www/html/mGSV/Arial.ttf /usr/share/fonts/truetype/

RUN cd /var/www/html/mGSV/ws \
    && tar -xzf mgsv-ws-server.tar.gz

RUN cd /var/www/html/mGSV/ws/mgsv-ws-server \ 
    && mvn package

RUN cp -f /var/www/html/mGSV/ws/mgsv-ws-server/target/ws-server-1.0RC1-jar-with-dependencies.jar /var/www/html/mGSV/ws/

RUN cd /var/www/html/mGSV/ws \ 
    && echo "mgsv_upload_url=http://localhost/mgsv" > config.properties \
    && echo "ws_publish_url=http\://localhost\:8081/MGSVService" >> config.properties \
    && java -jar ws-server-1.0RC1-jar-with-dependencies.jar &

这是我得到的输出:

Step 1/11 : FROM php:5-apache
 ---> 8f4a38cf4542
Step 2/11 : RUN apt-get update  && apt-get install -y --no-install-recommends                 openjdk-7-jdk                 maven       git         && rm -rf /var/lib/apt/lists/*
 ---> Using cache
 ---> f194797b9362
Step 3/11 : RUN git clone https://github.com/qunfengdong/mGSV.git
 ---> Using cache
 ---> 4acd066da444
Step 4/11 : RUN cd /var/www/html/mGSV     && mkdir tmp     && chmod -R 777 tmp
 ---> Using cache
 ---> f766f9ceb7d3
Step 5/11 : RUN cd /var/www/html/mGSV && sed -i.bak "s|'gsv'|'mgsv_user'|" lib/settings.php     && sed -i.bak "s|$database_pass = ''|$database_pass = 'mgsvpass'|" lib/settings.php     && sed -i.bak "s|cas-qshare.cas.unt.edu|localhost|" lib/settings.php
 ---> Using cache
 ---> 007dff8907f4
Step 6/11 : RUN cp /var/www/html/mGSV/Arial.ttf /usr/share/fonts/truetype/
 ---> Using cache
 ---> 026049ca32d8
Step 7/11 : RUN cd /var/www/html/mGSV/ws     && tar -xzf mgsv-ws-server.tar.gz
 ---> Using cache
 ---> 92a0f85b27a0
Step 8/11 : RUN cd /var/www/html/mGSV/ws/mgsv-ws-server     && mvn package
 ---> Using cache
 ---> 5aa1723f255f
Step 9/11 : RUN cp -f /var/www/html/mGSV/ws/mgsv-ws-server/target/ws-server-1.0RC1-jar-with-dependencies.jar /var/www/html/mGSV/ws/
 ---> Using cache
 ---> f0dbd0ac1ddb
Step 10/11 : RUN cd /var/www/html/mGSV/ws     && echo "mgsv_upload_url=http://localhost/mgsv" > config.properties     && echo "ws_publish_url=http\://localhost\:8081/MGSVService" >> config.properties     && java -jar ws-server-1.0RC1-jar-with-dependencies.jar &
 ---> Using cache
 ---> 0c86c0adddd5

但是,当我创建交互式会话时,它是空的:/var/www/html/

$ docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
php                                    5-apache            8f4a38cf4542        7 days ago          374MB

$ sudo docker run --entrypoint /bin/bash -i -t 8f4a38cf4542
root@a3908e297bcf:/var/www/html# ls

为什么我看不到 docker 容器内的文件夹?/var/www/html/mGSV

先谢谢你。

米甲

docker docker-compose

评论

0赞 Thanh Nguyen Van 3/22/2018
先做。RUN git clone https://github.com/qunfengdong/mGSV.gitRUN cd /var/www/html/
0赞 user3523406 3/22/2018
我把它改成了,但是当我登录文件夹时仍然不见了?RUN cd /var/www/html/ && git clone https://github.com/qunfengdong/mGSV.gitmGSV

答:

1赞 Matt 3/22/2018 #1

该映像是您在添加所有内容之前正在构建的基础映像。8f4a38cf4542php:5-apacheFROM

生成输出的末尾应包含一行:,这是需要从输出中复制和使用的图像 ID。您应该能够在完整输出中找到此图像:docker-composeSuccessfully built eccdcc9a9534

docker images -a

为了让生活更轻松,请为服务添加一个名称,以便 compose 标记构建,并且易于访问:imagewww

www:
  build: ./mGSV
  image: user3523406/www
  restart: always

然后

sudo docker run --entrypoint /bin/bash -it user3523406/www