在我将图像和shell构建到容器中之后,我不会看到我应该添加/复制的任何文件/目录。
我将容器上传到Heroku,并运行bash来环顾四周。
一旦我进入,在根级别,我在一个名为app
的目录中。
我在同一个Dockerfile中尝试了多个命令排列。什么都行不通..
COPY . app/
COPY . /app/
COPY config config/
ADD luup luup/
COPY luup ./luup/
COPY luup app/luup/
COPY ./luup app/luup/
COPY luup app/
COPY requirements requirements/
COPY manage.py manage.py
ADD ./config /config/
ADD ./config /app/config/
ADD ./config /app/config
是什么给出的?
这是一个修剪过的树:
.
├── Dockerfile.django
├── Dockerfile.local
├── Dockerfile.test
├── LICENSE
├── Procfile
├── README.rst
├── compose
│ ├── local
│ │ └── django
│ │ ├── celery
│ │ │ ├── beat
│ │ │ │ └── start.sh
│ │ │ └── worker
│ │ │ └── start.sh
│ │ └── start.sh
│ └── production
│ ├── caddy
│ │ ├── Caddyfile
│ │ └── Dockerfile.caddy
│ ├── django
│ │ ├── Dockerfile.django
│ │ ├── celery
│ │ │ ├── beat
│ │ │ │ └── start.sh
│ │ │ └── worker
│ │ │ └── start.sh
│ │ ├── entrypoint.sh
│ │ └── gunicorn.sh
│ └── postgres
│ ├── Dockerfile.postgres
│ └── maintenance
├── config
│ ├── __init__.py
│ │ └── wsgi.cpython-36.pyc
│ ├── settings
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-35.pyc
│ │ │ └── production.cpython-36.pyc
│ │ ├── base.py
│ │ ├── local.py
│ │ ├── production.py
│ │ └── test.py
│ ├── urls.py
│ └── wsgi.py
├── docs
│ ├── Makefile
│ ├── __init__.py
│ └── make.bat
├── heroku.yml
├── local.yml
├── locale
│ └── README.rst
├── luup
│ ├── __init__.py
│ ├── contrib
│ ├── static
│ │ ├── base.html
│ │ ├── pages
│ │ │ ├── about.html
│ │ │ └── home.html
│ │ └── users
├── manage.py
├── requirements
│ ├── base.txt
│ ├── local.txt
│ └── production.txt
有多个Dockerfiles,但我使用/测试的是,它们都是root用户。
这是我在shell中的样子:
Running bash on ⬢ boiling-anchorage-81724... up, run.2463 (Free)
~ $ pwd
/app
~ $ ls
~ $ ls
~ $ cd ..
/ $ ls
app bin dev etc lib lib64 lost+found proc sbin sys tmp usr var
如你所见,那里什么也没有。 ls
什么都不返回。这是我上面使用的Dockerfile的结果 - 包含许多COPY
和ADD
语句。
有人可以帮忙吗?在过去的几天里,我一直在为此而奋斗。
真的搞乱了一切,这个做工作:
COPY ./requirements /usr/src/app/requirements
RUN pip install --no-cache-dir -r /usr/src/app/requirements/production.txt
因为它最终会安装所有要求 我也尝试过将文件/目录复制到/ usr / src / app中,但即使我这样做,也不会在我进入shell时看到它。
编辑:根据heroku here,
"工作目录是/。您可以使用WORKDIR设置不同的目录。"
答案 0 :(得分:1)
除非您在Dockerfile中指定了WORK_DIR /app
,否则右侧的相对泊坞窗路径将无效。
COPY . app/
应该是
COPY . /app/
答案 1 :(得分:0)
上面的nelsonenzo答案是正确的。您需要在COPY之前添加WORKDIR语句,因为WORKDIR命令将同时创建文件夹和更改该文件夹。
WORKDIR / app等效于mkdir / app和CD / app
在您的Dockerfile中尝试一下:
WORKDIR /app
COPY . /app/