модуль rebar не может найти включить библиотеку в erlang: последний контейнер docker

#docker #erlang #eunit

#docker #erlang #eunit

Вопрос:

Я новичок в docker и erlang. Я установил docker и VSCode на свой компьютер с Windows, и я хочу научиться разрабатывать erlang в контейнере, поэтому я создал Dockerfile:

 FROM erlang:latest

WORKDIR /project

COPY . .
 

и каталог .devcontainer с
файлом devcontainer.json:

 {
    "name": "Erlang dev container",
    "context": ".",
    "dockerFile": "Dockerfile",
    "settings": { 
        "terminal.integrated.shell.linux": "/bin/bash"
    },
    "extensions": []
}
 

После того, как я открыл папку своего проекта в контейнере, я могу выдавать команды bash и запускать erl, но когда я пытаюсь попросить rebar протестировать мой код с

 rebar eunit
 

или

 rebar3 eunit
 

Я получаю сообщение об ошибке:

 can't find include lib "eunit/lib/eunit.hrl"
 

Что я сделал не так? Предполагается ли использовать erlang: latest image для разработки erlang? Как это исправить?

Ответ №1:

Для использования eunit , когда я запускаю программы erlang в оболочке (не используя docker), я использую следующую -include_lib директиву:

 -include_lib("eunit/include/eunit.hrl").
 

Похоже, вы используете другой путь:

  eunit/lib/eunit.hrl
 

в контейнере я могу выдавать команды bash

Затем используйте команды bash для поиска файла eunit.hrl .

Вы всегда можете просто скопировать файл eunit.hrl и поместить его в src каталог вашего проекта rebar, а затем использовать в своем модуле:

 -include("eunit.hrl")
 

Я новичок в docker и erlang.

В худшем случае не беспокойтесь о eunit. О erlang нужно многое узнать, прежде чем вам понадобится платформа тестирования.

Комментарии:

1. Большое спасибо за вашу помощь, вот и все, eunit / lib / eunit. hrl вместо eunit/include/eunit.hrl, теперь мои тесты прошли!