Dockerfile Cassandra - / usr / bin / env: 'python3 \ r': нет такого файла или каталога - PullRequest
0 голосов
/ 21 апреля 2020

Я не могу запустить свой контейнер кассандры, я получаю следующую ошибку при запуске контейнера кассанды:

/usr/bin/env: ‘python3\r’: No such file or directory

Мой Dockerfile:

FROM cassandra:3.11.6
RUN apt-get update && apt-get install -y apt-transport-https && apt-get install software-properties-common -y
COPY ["schema.cql", "wait-for-it.sh", "bootstrap-schema.py", "/"]
RUN chmod +x /bootstrap-schema.py /wait-for-it.sh
ENV BOOTSTRAPPED_SCHEMA_FILE_MARKER /bootstrapped-schema
ENV BOOTSTRAP_SCHEMA_ENTRYPOINT /bootstrap-schema.py
ENV OFFICIAL_ENTRYPOINT /docker-entrypoint.sh
# 7000: intra-node communication
# 7001: TLS intra-node communication
# 7199: JMX
# 9042: CQL
# 9160: thrift service
EXPOSE 7000 7001 7199 9042 9160
#Change entrypoint to custom script
COPY cassandra.yaml /etc/cassandra/cassandra.yaml
ENTRYPOINT ["/bootstrap-schema.py"]
CMD ["cassandra", "-Dcassandra.ignore_dc=true", "-Dcassandra.ignore_rack=true", "-f"]

Я ПОЛУЧИЛ ЭТУ ОШИБКУ ТОЛЬКО КОГДА Я присоединяюсь к этой линии:

ENTRYPOINT ["/bootstrap-schema.py"]

Я использую Windows 10 (Docker для Windows установлен). Что не так в этом скрипте: bootstrap -schema.py:

#!/usr/bin/env python3

import os
import sys
import subprocess
import signal
import logging


logger = logging.getLogger('bootstrap-schema')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
logger.addHandler(ch)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)

proc_args = [os.environ['OFFICIAL_ENTRYPOINT']]
proc_args.extend(sys.argv[1:])

if (not os.path.exists(os.environ["BOOTSTRAPPED_SCHEMA_FILE_MARKER"])):
    proc = subprocess.Popen(proc_args)  # Run official entrypoint command as child process

    wait_for_cql = os.system("/wait-for-it.sh -t 120 127.0.0.1:9042")  # Wait for CQL (port 9042) to be ready
    if (wait_for_cql != 0):
        logger.error("CQL unavailable")
        exit(1)

    logger.debug("Schema creation")
    cqlsh_ret = subprocess.run("cqlsh -f /schema.cql 127.0.0.1 9042", shell=True)

    if (cqlsh_ret.returncode == 0):
        # Terminate bg process
        os.kill(proc.pid, signal.SIGTERM)
        proc.wait(20)
        # touch file marker
        open(os.environ["BOOTSTRAPPED_SCHEMA_FILE_MARKER"], "w").close()
        logger.debug("Schema created")
    else:
        logger.error("Schema creation error. {}".format(cqlsh_ret))
        exit(1)
else:
    logger.debug("Schema already exists")

os.execv(os.environ['OFFICIAL_ENTRYPOINT'], sys.argv[1:])  # Run official entrypoint

Спасибо за любой совет

РЕДАКТИРОВАТЬ

Конечно, я пытался добавить ex.

RUN apt-get install python3

1 Ответ

0 голосов
/ 22 апреля 2020

ОК, моя вина - была известная проблема - кодирование. Мне пришлось кодировать windows файлы в Linux файлы - КАЖДЫЙ файл, также скрипты, все. Теперь работает отлично :) 1001 *

...