WedX - журнал о программировании и компьютерных науках

Тома Docker-compose не копируют файлы

Я использую Fedora 23 и использую docker-compose для создания двух контейнеров: app и db. Я хочу использовать этот докер в качестве среды разработки, но мне нужно выполнять сборку docker-compose и каждый раз, когда я меняю код, это неприятно. Итак, я искал и пробовал вариант «тома», но мой код не копируется в докер.

Когда я запускаю docker-build, команда «RUN ls» не отображает папку «app» или какие-либо ее файлы.

Obs.: в корневой папке у меня есть: docker-compose.yml, .gitignore, app (папка), db (папка)

Замечание.: если я удалю параметры volume и working_dir и вместо этого использую команду «COPY. / app» внутри app / Dockerfile, он будет работать, и мое приложение будет запущено, но я хочу, чтобы оно синхронизировало мои код.

Кто-нибудь знает, как заставить его работать?

Мой файл для создания докеров:

version: '2'  
services:  
  app:
    build: ./app
    ports:
     - "3000:3000"
    depends_on:
     - db
    environment:
     - DATABASE_HOST=db
     - DATABASE_USER=myuser
     - DATABASE_PASSWORD=mypass
     - DATABASE_NAME=dbusuarios
     - PORT=3000
    volumes:
     - ./app:/app
    working_dir: /app
  db:
    build: ./db
    environment:
     - MYSQL_ROOT_PASSWORD=123
     - MYSQL_DATABASE=dbusuarios
     - MYSQL_USER=myuser
     - MYSQL_PASSWORD=mypass

Здесь вы можете увидеть Dockerfile моего контейнера приложения: https://gist.github.com/jradesenv/d3f4c09 >

Вот вывод команды RUN ls внутри Dockerfile:

bin boot dev etc home lib lib64 media mnt opt ​​proc root run sbin srv sys tmp usr var


  • Как вы запускаете докер, локальный, виртуальный или удаленный? echo $DOCKER_HOST 21.06.2016
  • echo $ DOCKER_HOST ничего не выводит, но я запускаю docker local 23.06.2016

Ответы:


1

Объем смонтирован в контейнере. Dockerfile используется для создания образа, а этот образ используется для создания контейнера. Это означает, что RUN ls внутри вашего Dockerfile покажет файловую систему до того, как том будет смонтирован. Если вам нужно, чтобы эти файлы были частью образа для завершения сборки, их не должно быть в томе, и вам нужно будет скопировать их с помощью команды COPY, как вы описали. Если вам просто нужны доказательства того, что эти файлы смонтированы внутри вашего работающего контейнера, запустите

docker exec $container_name ls -l /

Где $container_name будет что-то вроде ${folder_name}_app_1, которое вы увидите в docker ps.

23.06.2016
  • В поисках способа отслеживать изменения файлов изнутри контейнера, это помогло мне понять, что только после КОПИРОВАНИЯ контейнер начинает отслеживать изменения. 17.09.2020

  • 2

    Две вещи, пробовали ли вы version: '3', вторая версия кажется устаревшей. Также попробуйте поместить рабочий_dir в Dockerfile, а не в docker-compose. Может это не поддерживается в версии 2?

    Это недавняя компоновка докеров, которую я использовал с томами и рабочими каталогами в соответствующих файлах Docker:

    version: '3'
    services:
      frontend:
        build:
          context: ./frontend
          dockerfile: Dockerfile.dev
        ports:
          - 3001:3001
        volumes:
          - ./frontend:/app
        networks:
          - frontend
      backend:
        build: .
        ports:
          - 3000:3000
        volumes:
          - .:/app
        networks:
          - frontend
          - backend
        depends_on:
          - "mongo"
      mongo:
        image: mongo
        volumes:
          - ./data/db:/data/db
        ports:
          - 27017:27017
        networks:
          - backend
    networks:
      frontend:
      backend:
    
    17.10.2018

    3

    Вы можете расширить или переопределить конфигурацию компоновки докеров. Следуйте за дополнительной информацией: https://docs.docker.com/compose/extends/

    12.04.2019

    4

    У меня была такая же проблема в Windows!

    volumes:
          - ./src/:/var/www/html
    

    В Windows ./src/ этот синтаксис может не работать в обычном command prompt, поэтому используйте вместо него powershell, а затем запустите docker-compose up -d.

    он должен работать, если это проблема с монтажом.

    26.12.2019
    Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]