微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Windows上运行Docker脚本时,如何替换“ \ r”行尾?

如何解决在Windows上运行Docker脚本时,如何替换“ \ r”行尾?

我在Windows 10上使用Docker 19(使用Cygwin运行Docker)。我有这个web / Dockerfile ...

FROM python:3.7-slim

RUN apt-get update && apt-get install

RUN apt-get install -y dos2unix
RUN apt-get install -y libmariadb-dev-compat libmariadb-dev
RUN apt-get update \
    && apt-get install -y --no-install-recommends gcc \
    && rm -rf /var/lib/apt/lists/*

RUN python -m pip install --upgrade pip

workdir /app/

copY requirements.txt requirements.txt

copY entrypoint.sh entrypoint.sh

RUN tr -d '\r' < /app/entrypoint.sh > /app/entrypoint2.sh
RUN python -m pip install -r requirements.txt

RUN grep '\r' /app/entrypoint.sh
RUN dos2unix /app/entrypoint.sh
RUN grep '\r' /app/entrypoint.sh

ENTRYPOINT ["bash","/app/entrypoint.sh"]

and the entrypoint.sh file referenced looks like

#!/bin/bash
set -e

python manage.py migrate
python manage.py migrate directory
python manage.py docker_init_db_data

exec "$@"

但是我猜有一些“ \ r”行结尾导致Windows上运行的“ docker-compose up”消失。在上面的文件中,我有

RUN dos2unix /app/entrypoint.sh

但是我想这没有用,因为运行“ docker-compose up”会导致

web_1     | set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
web_1     | /app/entrypoint.sh: line 3: $'\r': command not found
web_1     | UnkNown command: 'migrate\r'. Did you mean migrate?
web_1     | Type 'manage.py help' for usage.

如何正确替换shell脚本中的“ \ r”行结尾,以便可以在Windows(最好是所有其他)平台上运行Dockerfile?

解决方法

我遇到了同样的问题,在一行中输入命令并用 && 分隔它们解决了问题。

在你的情况下是:

python manage.py migrate --noinput && python manage.py migrate directory && python manage.py docker_init_db_data &&

希望它能解决您的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。