【问题标题】:Add windows folder in Dockerfile在 Dockerfile 中添加 windows 文件夹
【发布时间】:2016-02-09 05:39:34
【问题描述】:

我有用于 nodejs 和 mongodb 安装的 dockerfile。我安装了 docker 插件并在其中创建了一个作业。现在我需要从 Dockerfile 构建图像。我必须在 Dockerfile 中应用复制命令,才能将 nodejs 应用程序复制到容器中。

FROM ubuntu:latest

#OS Update
RUN apt-get update
RUN apt-get -y install git git-core unzip python-pip make wget build-essential python-dev libpcre3 libpcre3-dev libssl-dev vim nano net-tools iputils-ping supervisor curl supervisor

WORKDIR /home/wipro
#Mongo Setup
RUN curl -O http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.0.2.tgz && tar -xzvf mongodb-linux-x86_64-3.0.2.tgz && cd mongodb-linux-x86_64-3.0.2/bin && cp * /usr/bin/
#RUN mongod --dbpath /home/azureuser/CI_service/data/ --logpath /home/azureuser/CI_service/log.txt --logappend --noprealloc --smallfiles --port 27017 --fork

#Node Setup
#RUN curl -O https://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz && tar -xzvf node-v0.12.7.tar.gz && cd node-v0.12.7
#RUN cd /opt/node-v0.12.7 && ./configure && make && make install
#RUN cp /usr/local/bin/node /usr/bin/ && cp /usr/local/bin/npm /usr/bin/
RUN wget https://nodejs.org/dist/v0.12.7/node-v0.12.7-linux-x64.tar.gz
RUN cd /usr/local && sudo tar --strip-components 1 -xzf /home/wipro/node-v0.12.7-linux-x64.tar.gz
RUN npm install forever -g

#CI SERVICE
ADD prod /home/wipro/
ADD servicestart.sh /home/wipro/
RUN chmod +x /home/wipro/servicestart.sh
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["sh", "/home/wipro/servicestart.sh"]

EXPOSE 80
EXPOSE 27017

在 dockerfile 中,我正在尝试将 prod 和 servicestart.sh 添加到图像中。在 linux 中是可能的。我是 Windows 新手。如何从 Windows 将这些文件添加到图像中?

在构建作业时,在 docker 插件中遇到问题

FATAL: uri was not specified java.lang.NullPointerException: uri was not specified
at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:204)    
at com.github.dockerjava.core.DockerClientConfig$DockerClientConfigBuilder.withUri(DockerClientConfig.java:406)     
at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.createDockerClient(DockerBuilder.java:120)    
at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder$DescriptorImpl.getDockerClient(DockerBuilder.java:204)   
at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:68)   
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)    
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:814)    at hudson.model.Build$BuildExecution.build(Build.java:199)  
at hudson.model.Build$BuildExecution.doRun(Build.java:160)  
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:593)    
at hudson.model.Run.execute(Run.java:1567)  
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)  
at hudson.model.ResourceController.execute(ResourceController.java:88)  
at hudson.model.Executor.run(Executor.java:237)

需要指定什么URI?

【问题讨论】:

    标签: windows jenkins docker dockerfile


    【解决方案1】:

    您需要确保这些文件是:

    • 在与 Dockerfile 相同的文件夹中,以便成为docker build context 的一部分,
    • 在以c:\Users\<yourLogin> 开头的文件夹中,因为只有该文件夹安装在基于 VM boot2docker TiynyCore 的 Linux 主机中。

    The OP 使用 Docker build step plugin for Jenkins 确认 in the comments,并带有 URI

    docker daemon -D -H tcp://127.0.0.1:2376
    

    【讨论】:

    • 我们需要在windows中安装docker吗?在构建时,由于 Jenkins 中未指定 docker 服务器 URL,我收到错误
    • 错误信息:致命:未指定 uri
    • @user2439278 如果你的slave在Windows上执行docker命令,需要安装docker-machine(从github.com/docker/machine/releases复制一个exe即可),并且需要执行docker-machine env返回的命令让任何 docker 命令正常工作。
    • 我的 Windows 中安装了 docker 工具包和 docker 机器。现在如何进行?
    • @user2439278 算了,docker-machine.exe就够了:docker-machine create然后执行docker-machine env的结果
    猜你喜欢
    • 2022-12-20
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2023-04-01
    相关资源
    最近更新 更多