gpt4 book ai didi

mongodb - 如何在Windows中播种Docker容器

转载 作者:行者123 更新时间:2023-12-02 19:26:58 26 4
gpt4 key购买 nike

我打算从Docker Hub安装一个mongodb docker容器,然后将一些数据插入其中。显然,需要一个mongodb种子容器。所以我做了以下事情:

  • Dockerfile中创建了Mongo种子容器的mongo_seed/Dockerfile,并且Dockerfile中的代码如下:
    FROM mongo:latest
    WORKDIR /tmp
    COPY data/shops.json .
    COPY import.sh .
    CMD ["/bin/bash", "-c", "source import.sh"]
    import.sh的代码如下:
    #!/bin/bash
    ls .
    mongoimport --host mongodb --db data --collection shops --file shops.json
    shops.json文件包含要导入到Mongo的数据
  • 在当前工作目录中创建了一个docker-compose.yml文件,代码如下:
    version: '3.4'
    services:
    mongodb:
    image: mongo:latest
    ports:
    - "27017:27017"
    container_name: mongodb
    mongodb_seed:
    build: mongodb_seed
    links:
    - mongodb

  • 上面的代码成功地使 mongodb服务执行了 import.sh以导入json数据- shops.json它在我的Ubuntu中完美运行。但是,当我尝试在Windows中运行docker-compose up -d --build mongodb_seed命令时,数据导入失败,并显示错误日志:
    Attaching to linux_mongodb_seed_1
    mongodb_seed_1 | ls: cannot access '.'$'\r': No such file or directory
    : no such file or directory2T08:33:45.552+0000 Failed: open shops.json
    mongodb_seed_1 | 2019-04-02T08:33:45.552+0000 imported 0 documents

    任何人都知道为什么会这样吗?以及如何修复它使其也可以在Windows中使用?

    最佳答案

    注意错误ls: cannot access '.'$'\r': No such file or directory

    Windows上的Docker(或任何基于Linux / macOS的系统)的问题之一是行尾处理方式的差异。

    Windows以回车符和换行\r\n结束行,而Linux和macOS仅使用换行\n。当您尝试在Windows中创建文件并在Linux / macOS系统上运行该文件时,这将成为一个问题,因为这些系统将\r视为文本而不是换行符。

    只要有人在Windows上的任何类型的编辑器上进行任何编辑,请确保在脚本文件上运行dos2unix。即使在Git Bash上创建脚本文件,也不要忘记运行dos2unix

    dos2unix import.sh

    参见 https://willi.am/blog/2016/08/11/docker-for-windows-dealing-with-windows-line-endings/

    在您的情况下:
    FROM mongo:latest
    RUN apt-get update && apt-get install -y dos2unix
    WORKDIR /tmp
    COPY data/shops.json .
    COPY import.sh .
    RUN dos2unix /import.sh && apt-get --purge remove -y dos2unix
    CMD ["/bin/bash", "-c", "source import.sh"]

    关于mongodb - 如何在Windows中播种Docker容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55470358/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com