/build/target/release/to_do .
И запускаю:
CMD ["./to_do"]
Но контейнер уходит в бесконечный рестарт, командой docker logs *container* ловлю ошибку:
exec ./to_do: no such file or directory
Что не так? Файл to_do точно есть в директории, проверял командой ls -a.
Dockerfile:
FROM rust as builder
WORKDIR /build/
COPY ./Cargo.toml .
COPY ./src ./src
RUN cargo build --release
RUN cargo install diesel_cli --no-default-features --features postgres
FROM alpine:3.16 AS run
EXPOSE 8080
WORKDIR /run/
COPY --from=builder /build/target/release/to_do .
COPY --from=builder /usr/local/cargo/bin/diesel .
COPY ./dist ./dist
COPY ./migrations ./migrations
COPY ./docker-entrypoint.sh .
RUN chmod 777 ./docker-entrypoint.sh
CMD ["docker-entrypoint.sh"]
Похоже дело в том что инструкция CMD вызывается 2 раза, "./to_do" передаётся как аргумент к первому вызову?
Хотя нет. Создал просто скрипт docker-entrypoint.sh, командой CMD запускаю только его - опять же, файл не найден.
CMD не вызывается два раза, он перезаписывается, и выполняется последний. если ты хочешь запускать две команды последовательно, пиши скрипт и выполняй команды внутри него
ну и chmod +x выполни над своим бинарником
Не понимаю что не так. Уже и вовсе убрал инструкцию CMD, приаттачился к контейнеру и пробую запустить сам:
У файла уже есть права на исполнение.
Показывай вывод ls -lsah, и заголовок файла
Если речь про docker-entrypoint.sh: #!/bin/sh
Дичь какая-то, может в названии файла опечатка
Подниму, может ещё у кого какие идеи есть? При запуске контейнера ловлю ошибку: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "docker-entrypoint.sh": executable file not found in $PATH: unknown
знач у тебя исполняемого файла в патхе нету, посмотри шо там запускается и откуда
Все файлы на месте, права на исполнение есть. Даже ручками не получается запустить файл.
Обсуждают сегодня