Docker'ın yerel bir dizine yazmasını nasıl sağlayabilirim?


3

Docker'ı kullanarak bir kuyruksallayan (django uzantısı, http://wagtail.io/ ) sitesi kurmaya çalışıyorum ve çalıştığım görülüyor, ancak söyleyebildiğim kadarıyla siteyi benden uzağa sakladığını söyleyebilirim Docker ve bağırsaklarında aslında onunla çalışamıyorum.

Dizinim bu şekilde ayarlandı:

dir
|- docker-compose.yml
|- web
    |- Dockerfile
    |- requirements.txt

Docker-compose.yml

version: '2'
services:
  db:
    restart: always
    image: postgres
  web:
    build: ./web
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
    restart: always

Docker Dosyam:

FROM python:3.5
MAINTAINER

RUN apt-get update -y

ENV PYTHONBUFFERED 1

RUN mkdir /code
WORKDIR /code

ADD requirements.txt /code/

RUN pip3 install -r requirements.txt

ADD . /code/

ve kaçtığımda ...

$docker-compose run web wagtail start site .
Building web
Step 1 : FROM python:3.5
 ---> 64869b3b2083
Step 2 : MAINTAINER 
 ---> Using cache
 ---> 2a539247021e
Step 3 : RUN apt-get update -y
 ---> Using cache
 ---> 6d1094098071
Step 4 : ENV PYTHONBUFFERED 1
 ---> Using cache
 ---> 12a153c417cd
Step 5 : RUN mkdir /code
 ---> Using cache
 ---> 4cc21041c1c8
Step 6 : WORKDIR /code
 ---> Using cache
 ---> eaca96927442
Step 7 : ADD requirements.txt /code/
 ---> Using cache
 ---> 2f1977d72542
Step 8 : RUN pip3 install -r requirements.txt
 ---> Using cache
 ---> a73e7640aa35
Step 9 : ADD . /code/
 ---> 31bd3c0432cd
Removing intermediate container 66e4fa5b074f
Successfully built 31bd3c0432cd
Creating a wagtail project called site
CommandError: /code/requirements.txt already exists, overlaying a project or app into an existing directory won't replace conflicting files

(İlk çalıştırdığımda, mükemmel bir şekilde "çalıştı".)

Oluşturduğu bu mistik dosyalar nerede ve onları nasıl temizleyebilirim ve gerçekten görebildiğim / düzenleyebileceğim bir diziyle çalışmasını nasıl sağlayabilirim?


EDIT: Bu yaklaşım Docker'ın dokümanlarında Django örneğine dayanmaktadır ( https://docs.docker.com/compose/django/ ). Bu örneği denedim (dosyaları kullanarak) ve aynı sorunu var:

$ docker-compose run web django-admin.py startproject composeexample .
Creating network "dockerdjangotest_default" with the default driver
Creating dockerdjangotest_db_1
Building web
Step 1 : FROM python:2.7
2.7: Pulling from library/python
efd26ecc9548: Already exists
a3ed95caeb02: Pull complete
d1784d73276e: Already exists
72e581645fc3: Already exists
9709ddcc4d24: Already exists
2d600f0ec235: Already exists
de1491f1bbd4: Pull complete
4becc568d2ff: Pull complete
Digest: sha256:ee46fc8b96ed0d1f1af71d0859ce6ba5f9be3b587f5a608193599b48d0a157c2
Status: Downloaded newer image for python:2.7
 ---> a3b29970a425
Step 2 : ENV PYTHONUNBUFFERED 1
 ---> Running in 35a6721182b3
 ---> d8424740fce4
Removing intermediate container 35a6721182b3
Step 3 : RUN mkdir /code
 ---> Running in d1c7e92821ab
 ---> 1c0b1da9e9d3
Removing intermediate container d1c7e92821ab
Step 4 : WORKDIR /code
 ---> Running in 120bb2d0e5dd
 ---> 72725e994f0e
Removing intermediate container 120bb2d0e5dd
Step 5 : ADD requirements.txt /code/
 ---> ef891d60690b
Removing intermediate container 862a5e314f2f
Step 6 : RUN pip install -r requirements.txt
 ---> Running in f51b2bc2ca48
Collecting Django (from -r requirements.txt (line 1))
  Downloading Django-1.9.5-py2.py3-none-any.whl (6.6MB)
Collecting psycopg2 (from -r requirements.txt (line 2))
  Downloading psycopg2-2.6.1.tar.gz (371kB)
Building wheels for collected packages: psycopg2
  Running setup.py bdist_wheel for psycopg2: started
  Running setup.py bdist_wheel for psycopg2: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/e2/9a/5e/7b620848bbc7cfb9084aafea077be11618c2b5067bd532f329
Successfully built psycopg2
Installing collected packages: Django, psycopg2
Successfully installed Django-1.9.5 psycopg2-2.6.1
 ---> 349d20d9823e
Removing intermediate container f51b2bc2ca48
Step 7 : ADD . /code/
 ---> 38190d0f4c65
Removing intermediate container 0da1169b5cfa
Successfully built 38190d0f4c65

Ancak hiçbir composeexampledizin oluşturulmadı (bu belgelerin şimdi görünmesi gerektiğine göre belgelerin aksine):

$ ls -l
total 24
-rw-r--r--  1 user  wheel  146 Apr 17 17:50 Dockerfile
-rw-r--r--  1 user  wheel  209 Apr 17 17:51 docker-compose.yml
-rw-r--r--  1 user  wheel   16 Apr 17 17:50 requirements.txt

Ancak liman işçisi hala her şeyin çalıştığına ikna olmuş görünüyor; Yani bu dosyalar ... bir yerlerde mi?

$ docker-compose run web django-admin.py startproject composeexample .
CommandError: /code/manage.py already exists, overlaying a project or app into an existing directory won't replace conflicting files

Birimlerin ve kök dizininin asıl konumuna giden yolu görüntülemek için "docker inspect" komutunu kullanabilirsiniz, ancak muhtemelen bu dizinleri docker tarafından yönetildiği gibi doğrudan değiştirmek istemezsiniz.
Lie Ryan,

Yanıtlar:


1

Bu dosyalara erişmek için ihtiyacınız olan:


Tamam, peki ama prensipte belgelerin kabın dışında görünmesini sağlamanın bir yolu var, değil mi? Öğreticiye göre, iskele edilmiş django uygulamasını sadece konteynere girerek erişilebilir yapmak yerine, proje dizininde (liman işçisi dışında) yeni bir klasöre koyması gerekiyordu.
futuraprime

Bir kez ekli hacimli bir konteynır
fırlattığınızda

Konteynır, ancak yine de, dokümanların olması gerektiğini önerdiği konteynırın dışında erişilebilir olmayabilir. Öğreticinin bir sonraki satırı bana "Proje dizininizde composeexample/settings.pydosyayı düzenleyin" der . Bunu yapamam, çünkü bunları proje dizinime eklemek için atılan önceki adım yapmadı. Onları kendim yaratırsam, yardımcı program docker, kabın içindeki dosyaların üzerine proje dizinimdeki dosyaların üzerine yazmak yerine bir hata atar.
futuraprime

volumeiçinde yönergesi docker-compose.ymlfarklı volumesZaten bu dosyada var hat?
futuraprime
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.