Контейнер Docker закрывается сразу после запуска

#windows #docker #docker-compose #erlang #vscode-remote

#Windows #docker #docker-compose #erlang #vscode-удаленный

Вопрос:

Я хочу настроить обучающий контейнер разработки для VSCode на моем компьютере с Windows 10, но когда я нажимаю «Открыть папку в контейнере» в VSCode, я получаю сообщение об ошибке:

 [2020-11-24T10:21:22.963Z] [PID 8208] 
[2020-11-24T10:21:23.070Z] [PID 8208] [8794 ms] Start: Run: docker ps -q -a --filter label=com.docker.compose.project=lecture2 --filter label=com.docker.compose.service=development
[2020-11-24T10:21:23.762Z] [PID 8208] [9486 ms] Start: Run: docker inspect --type container 03d485c0d0b0
[2020-11-24T10:21:24.630Z] [PID 8208] [10354 ms] Start: Inspecting container
[2020-11-24T10:21:24.631Z] [PID 8208] [10355 ms] Start: Run: docker inspect --type container 03d485c0d0b08ae5af7bc81124f9205d933ce77441829cfcf176a6dd767ab291
[2020-11-24T10:21:25.656Z] [PID 8208] [11380 ms] Start: Run: docker exec -i -u root -e VSCODE_REMOTE_CONTAINERS_SESSION=663b838f-c06e-4178-ae10-5f48efb218811606213272822 03d485c0d0b08ae5af7bc81124f9205d933ce77441829cfcf176a6dd767ab291 /bin/sh
[2020-11-24T10:21:25.678Z] [PID 8208] [11402 ms] Start: Run in container: uname -m
[2020-11-24T10:21:26.558Z] [PID 8208] [12282 ms] Start: Run in container: cat /etc/passwd
[2020-11-24T10:21:26.558Z] [PID 8208] [12282 ms] Stdin closed!
[2020-11-24T10:21:26.570Z] [PID 8208] [12294 ms] Shell server terminated (code: 1, signal: null)

Error response from daemon: Container 03d485c0d0b08ae5af7bc81124f9205d933ce77441829cfcf176a6dd767ab291 is not running
 

И если я просто выдам команду:

 docker-compose up
 

Контейнер запускается и останавливается немедленно без каких-либо ошибок в консоли.

Моя настройка такая: Dockerfile:

 FROM erlang:latest

WORKDIR /project

CMD tail -f /dev/null
 

docker-compose.yml:

 version: '3'
services:
  development:
    build:
      context: .
    volumes:
      - ./:/project
      - build:/project/_build
      - deps:/project/deps

volumes:
  build:
  deps:
 

.devcontainer/devcontainer.json:

 {
    "name": "Erlang dev container",

    "service": "development",
  
    "context": "..",

    "dockerComposeFile": "..\docker-compose.yml",

    "workspaceFolder": "/project",

    "settings": { 
        "terminal.integrated.shell.linux": "/bin/bash"
    },

    "extensions": []  
}
 

Почему это не работает?

PS. Я даже изменил свой Dockerfile следующим образом:

 FROM erlang:latest

WORKDIR /project

COPY . .
 

И мой docker-compose.yml к этому:

 version: '3'
services:
  development:
    build:
      context: .
 

И это все еще не работает.

PS PS. Но! Когда после этого я изменил строку devcontainer.json:

 "dockerComposeFile": "..\docker-compose.yml",
 

Для:

 "dockerFile": "..\Dockerfile",
 

Только тогда моя папка была открыта в контейнере с помощью VSCode.
Но я не хочу КОПИРОВАТЬ . . внутри моего Dockerfile я хочу добавить папку моего проекта в качестве тома в моем файле docker-compose.yml. Как мне это сделать?

Ответ №1:

Я решил свою проблему, добавив tty:true в мое определение службы docker-compose, например:

 version: '3'
services:
  development:
    build:
      context: .
    tty: true
    volumes: 
      - ./:/project