TL; DR: Ошибка получения /docker-entrypoint.sh: line 10: exec: nginx: cannot execute: Is a directory
выполняется docker run username/srdc_prod:2020.07.26
, когда docker-compose up
работает нормально.
У меня есть контейнер docker, который я отправил в DockerHub. Я могу запустить это локально с помощью docker -compose up. Я снял это на своем удаленном сервере и теперь пытаюсь использовать docker run username/srdc_prod:2020.07.26
.
Когда я это делаю, я получаю сообщение об ошибке /docker-entrypoint.sh: line 10: exec: nginx: cannot execute: Is a directory
. Выполнение docker-compose up
отлично работает локально. Я хочу отправить sh этот образ в Docker Hub, вытащить его и запустить на моем удаленном сервере. Однако я не могу использовать docker-compose up
, потому что файл docker-compose.yaml
не существует удаленно. Я понимаю, что могу попробовать клонировать свое репозиторий GitHub удаленно, а затем запустить docker-compose up
, но это не дает возможности отправить контейнер в DockerHub и, в конечном итоге, настроить CI / CD.
Есть ли способ запустить docker -составить на контейнере? Или можно увидеть все выполненные команды? Я видел в этот вопрос , что я могу использовать docker ps --no-trunc
, чтобы увидеть все команды, выполняемые для запуска docker контейнеров, но все они полагаются на файл docker-entrypoint.sh
, с которым я не могу выполнить удаленно. Я все делаю неправильно, и мне нужно реорганизовать мой Dockerfile для работы на удаленном сервере?
Изображение на удаленном сервере
username@ubuntu-512mb-name:~$ docker image ls
WARNING: Error loading config file: /home/username/.docker/config.json: stat /home/username/.docker/config.json: permission denied
REPOSITORY TAG IMAGE ID CREATED SIZE
username/srdc_prod 2020.07.26 af62927882ee 5 days ago 504MB
docker -entrypoint. sh
1 #!/bin/bash
2
3 echo "Collect static files"
4 python manage.py collectstatic --noinput
5
6 echo "Apply database migrations"
7 python manage.py migrate --noinput
8
9 echo "Starting daphne server"
10 exec "$@" # offending line
Dockerfile
FROM python:3-alpine
# set env vars
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
RUN apk update && apk add --no-cache postgresql-dev gcc libffi-dev musl-dev build-base python3-dev bash
COPY requirements.txt /app/requirements.txt
RUN pip install --upgrade pip && pip install --no-cache-dir -r /app/requirements.txt
COPY test-requirements.txt /app/test-requirements.txt
RUN pip install --upgrade pip && pip install --no-cache-dir -r /app/test-requirements.txt
COPY . /app
# set working directory
WORKDIR /app
RUN mkdir -p /var/www/srdc/static/
RUN chmod 755 /var/www/srdc/static/
EXPOSE 8000
ENV DJANGO_SETTINGS_MODULE=srdc.settings
CMD ["nginx", "-g", "daemon off;"]
ADD docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod a+x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]
docker -compose.yml
version: '3'
services:
django_web:
build: .
command: bash -c "daphne -b 0.0.0.0 -p 8000 srdc.asgi:application"
expose:
- 8000
image: srdc:v0
container_name: srdc_django_web
volumes:
- .:/app
- static_volume:/var/www/srdc/static/
depends_on:
- db
nginx:
build: ./nginx
ports:
- "80:80"
- "443:443"
volumes:
- static_volume:/var/www/srdc/static/
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
depends_on:
- django_web
db:
image: postgres
container_name: "my_postgres"
ports:
- "54320:5432"
volumes: - my_dbdata:/var/lib/postgresql/data
volumes: my_dbdata:
static_volume: media_volume: