при использовании команды docker-compose ваш хост будет передаваться по имени службы. поэтому у вас будет host=mysql
в вашем случае, а не host=127.0.0.1
.
Если вы используете docker-compose, различные службы похожи на разные хосты. Вы запускаете веб-приложение в своем приложении php (имя службы), которое подключается к службе базы данных к приложению mysql (имя службы)
У меня есть обходной путь (не ответ на первоначальный вопрос, я все еще надеюсь, что кто-то сможет определить мою ошибку!). Просто вызвать автономный pandoc
с помощью System.readProess
, передать текст и получить результат обратно, даже не читая и не записывая файлы:
processCites2x :: Maybe FilePath -> Maybe FilePath -> Text -> ErrIO Text
-- porcess the cites in the text (not with the API)
-- using systemcall because the standalone pandoc works with
-- call: pandoc -f markdown -t html --filter=pandoc-citeproc
-- with the input text on stdin and the result on stdout
-- the csl and bib file are used from text, not from what is in the arguments
processCites2x _ _ t = do
putIOwords ["processCite2" ] -- - filein\n", showT styleFn2, "\n", showT bibfn2]
let cmd = "pandoc"
let cmdargs = ["--from=markdown", "--to=html5", "--filter=pandoc-citeproc" ]
let cmdinp = t2s t
res :: String <- callIO $ System.readProcess cmd cmdargs cmdinp
return . s2t $ res
-- error are properly caught and reported in ErrIO
t2s
и s2t
- утилиты преобразования между строкой и текстом ErrIO
- это ErrorT Text a IO
, а callIO
- по существу, liftIO
с обработкой ошибок.
Первоначальная проблема была очень простой: я не включил опцию Ext_citations
в markdownOptions
. Когда он включен, пример работает (благодаря помощи, которую я получил со страницы выпуска pandoc-citeproc
). Код ссылки обновляется ...