我正在嘗試使用Docker構建和運行Marklogic實例。 Marklogic提供了一些不錯的http api,因此,作爲Dockerfile中的最終CMD
,我運行了兩個腳本,它們通過curl
執行一些http請求,以便將Marklogic的實例正確配置爲容器啓動。但是,當我跑我的形象,運行容器時使用curl成功運行
docker run -p 7997-8002:7997-8002 --name gi-ml-container -e USER=admin -e PASSWORD=admin -e REALM=public -e HOST=gi-ml-container gi-marklogic
我得到這個錯誤:
0curl: (6) Could not resolve host: gi-ml-container; Name or service not known
我想conainer的名字應該是足夠多的。我如何對Dockerfile運行的容器執行curl
?這是正確的方式嗎? 我在Ubuntu 16.04上使用Docker 1.12.6構建78d1802。這裏是我的Dockerfile:
FROM centos:centos7
ARG USER=admin
ARG PASSWORD=admin
ARG REALM=public
ARG HOST=localhost
RUN yum -y install glibc.i686 gdb.x86_64 redhat-lsb.x86_64 && yum clean all
RUN yum -y install initscripts && yum clean all
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/MarkLogic/mlcmd/bin
COPY MarkLogic-RHEL7-8.0-6.3.x86_64.rpm /tmp/MarkLogic-RHEL7-8.0-6.3.x86_64.rpm
COPY marklogic.admin.setup.sh /tmp/marklogic.admin.setup.sh
COPY marklogic.init.database.sh /tmp/marklogic.init.database.sh
RUN chmod +x /tmp/*.sh
RUN yum -y install /tmp/MarkLogic-RHEL7-8.0-6.3.x86_64.rpm
RUN rm /tmp/MarkLogic-RHEL7-8.0-6.3.x86_64.rpm
EXPOSE 7997 7998 7999 8000 8001 8002
CMD /etc/init.d/MarkLogic start && ./tmp/marklogic.init.database.sh -h $HOST && ./tmp/marklogic.admin.setup.sh -u $USER -p $PASSWORD -r $REALM -h $HOST && tail -f /dev/null
這Dockerfile使用兩個.sh
文件到Marklogic實例配置爲容器啓動。這是marklogic.init.database.sh
:
TIMESTAMP=`curl -d "" -X POST http://${HOST}:8001/admin/v1/init`
,這是我marklogic.admin.setup.sh
:
TIMESTAMP=`$CURL -X POST -H
"Content-type: application/x-www-form-urlencoded" \
--data "admin-username=${USER}" --data "admin-password=${PASS}" \
--data "realm=${SEC_REALM}" \
http://${HOST}:8001/admin/v1/instance-admin`
我很跟進什麼Maklogic顯示了一對夫婦如何做到這一點here和here漂亮的文章。
您正在同一個容器上運行Maklogic正在運行的捲髮嗎?所以你c通過調用localhost來捲曲自己的機器:'''TIMESTAMP ='curl -d「」-X POST http:// localhost:8001/admin/v1/init'''。這可能有幫助。 – n2o
你好!這是我第一次嘗試,但我得到了同樣的結果:'失敗連接到本地主機:8001;連接被拒絕。 – Francesco
我不太清楚你捲髮的時候(我也不知道Maklogic)。通常情況下,您認爲您的容器啓動,然後對容器執行外部捲曲,無論它是否設置。這就是我的建議和我在CI /測試工作流程中所做的。 – n2o