При выполнении моего init.sh я вызываю команду:
sudo bash ${INSTALLPATH}seafile.sh start
После этого ошибка:
seafile_1_f2341d904d27 | /bin/sh: 1: sudo: not found
имеет место.
открывая каталог «bin» и глядя на «sh», это просто нечитаемые символы.
Dockerfile, вызывающий init.sh, делает это следующим образом:
FROM debian
#FROM armv7/armhf-debian
MAINTAINER me
# install packages
RUN apt-get update && apt-get install sudo -y
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
ca-certificates \
python2.7 \
python-setuptools \
python-imaging \
python-ldap \
python-urllib3 \
sqlite3 \
wget
# Copy scripts
ADD ./scripts /scripts
# set environment variables
ENV SERVER_NAME mdh-seafile
ENV SERVER_IP 127.0.0.1
ENV FILESERVER_PORT 8082
ENV SEAFILE_DIR /data
ENV SEAFILE_VERSION seafile-server-6.3.4
ENV INSTALLPATH /opt/seafile/${SEAFILE_VERSION}/
# clean for smaller image
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
# Volumes for persistent configuration
VOLUME /opt/seafile/
# added
COPY /opt/seafile/${SEAFILE_VERSION}/seafile.sh .
COPY /opt/seafile/${SEAFILE_VERSION}/seahub.sh .
# set entrypoint
ENTRYPOINT sudo bash /scripts/init.sh
Инит.ш:
else
# start seafile
# whoami -> Output: root
sudo bash ${INSTALLPATH}seafile.sh start
sudo bash ${INSTALLPATH}seahub.sh start
# keep seafile running in foreground to prevent docker container shutting down
while true; do
sudo tail -f /opt/seafile/logs/seafile.log
sleep 10
done
fi
Я выполняю все, вызывая sudo bash install.sh
, который выполняет файл docker-compose, который ссылается на компоненты.
Докер-композитор:
version: '2'
services:
db:
#image: hypriot/rpi-mysql
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=###
volumes:
- /mnt/data/mysql:/var/lib/mysql
duply:
build: .
volumes:
- ./config:/config
- /mnt/data:/mnt/data
- ./webinterface:/var/www/html/MyDigitalHome
- /mnt/guestbackup:/mnt/guestbackup/backup
#- /mnt/usb-removable:/usb-removable
ports:
- "8080:80"
- "24:22"
links:
- db
seafile:
build: seafile/
volumes:
- ./seafile/config:/config
- /mnt/data/seafile:/data
ports:
- "8000:8000"
- "8082:8082"
environment:
- SEAFILE_ADMIN=###@mydigitalhome.xy
- SEAFILE_ADMIN_PW=###
owncloud:
build: owncloud/
volumes:
- /mnt/data/owncloud:/data
- ./owncloud/config:/var/www/html/config
ports:
- "8090:80"
links:
- db:mysql
Текущие ошибки:
ERROR: Service 'seafile' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder845725722/opt/seafile/seafile-server-6.3.4/seafile.sh: no such file or directory
Attaching to mdh_seafile_1_f2341d904d27, mdh_db_1_46bebe733124, mdh_duply_1_170a5db26129, mdh_owncloud_1_260c3a56f2a5
seafile_1_f2341d904d27 | bash: seafile.sh: No such file or directory
seafile_1_f2341d904d27 | bash: seahub.sh: No such file or directory
seafile_1_f2341d904d27 | tail: cannot open '/opt/seafile/logs/seafile.log' for reading: No such file or directory
seafile_1_f2341d904d27 | tail: no files remaining
@samthegolden Без sudo я получаю сообщение об ошибке: файл не найден.
Вы также можете поделиться первой строкой вашего Dockerfile? строка ОТ. Чтобы мы могли узнать, используете ли вы Ubuntu, Alpine или другой дистрибутив?
Вы уже root в контейнере, вам не нужно sudo.
@BMitch - без sudo я получаю сообщение об ошибке: такого каталога нет.
Начиная с debian
образа, который вам нужно установить sudo
, вы можете сделать это, добавив RUN apt-get update && apt-get install sudo -y
в начало вашего Dockerfile. Затем перестройте свой образ с помощью docker build .
и снова запустите команду.
Комментарии не предназначены для расширенного обсуждения или сеансов отладки; этот разговор был перешел в чат. Убедитесь, что редактировать ответ отражает результат обсуждения.
Я предполагаю, что вы используете это в докере. вы можете добавить в свой файл докеров
RUN apt update && apt install -y sudo
Это должно решить вашу проблему.
Я уже сделал это. Sudo отлично работает в любом другом месте.
Пожалуйста, поделитесь дополнительной информацией о вашей проблеме. Вы корень?
sudo
может не существовать, потому что вы root. Может даже не быть Баша.sh
файл является двоичным, так что это нормально.