0

I am building my first customs Docker with Docker compose and I feel I am very close to finishing it but I have having an issue with what seem to be the entrypoint

FYI i am tryng to deploy a django app with postgres, nginx, certbot, letsencrypt

this is what I am seeing:

certbot_1 | /data/entrypoint.sh: exec: line 14: certbot: not found nginx_1 | /data/entrypoint.sh: exec: line 14: run: not found

EDIT: I was able to make them run with the editted code but Ngnix exits with a code 0 and I don't know why and wont run

I have tried changing path with no luck

I am not sure what I am doing wrong

any advice you can provide would be great!

docker compose file:

version: '3.8'

services:
  web:
    build: .
    command: gunicorn FleetOptimal.wsgi:application --bind 0.0.0.0:8000
    environment:
    - TZ=America/Toronto
    volumes:
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/FleetOptimal/:/manage/
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/:/data/
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/FleetOptimal/staticfiles/:/static_volume/
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/FleetOptimal/images/:/media_volume/
    expose:
      - 8000
    env_file:
      - ./.env.dev
    depends_on:
      - db

  db:
    image: postgres:13.0-alpine 
    volumes:
      - /home/littlejiver/docker/postgres/postgres_data:/postgres_data/
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Canada/Toronto
      - POSTGRES_USER=someusername
      - POSTGRES_PASSWORD=@somepassword
      - POSTGRES_DB=somedb

  nginx-proxy:
    tty: true
    image: nginx:latest
    container_name: nginx-proxy
    build: .
    command: nginx -g "daemon off"
    restart: always
    environment:
      - NGINX_DOCKER_GEN_CONTAINER=nginx-proxy-letsencrypt
    ports:
      - 443:443
      - 80:80
    volumes:
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/:/data/
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/FleetOptimal/staticfiles/:/static_volume/
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/FleetOptimal/images/:/media_volume/
      - certs:/etc/nginx/certs
      - html:/usr/share/nginx/html
      - vhost:/etc/nginx/vhost.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
    depends_on:
      - web

  nginx-proxy-letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    env_file:
      - ./.env.dev
    environment:
      - NGINX_DOCKER_GEN_CONTAINER=nginx-proxy-letsencrypt
    volumes:
      - /home/littlejiver/src/FleetOptimal/FleetOptimal/:/data/
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - certs:/etc/nginx/certs
      - html:/usr/share/nginx/html
      - vhost:/etc/nginx/vhost.d
      - acme:/etc/acme.sh
    depends_on:
      - nginx-proxy


volumes:
  postgres_data:
  static_volume:
  media_volume:
  certs:
  html:
  vhost:
  acme:

DockerFile for Ngnix:

FROM nginx:latest
COPY vhost.d/default /etc/nginx/vhost.d/default
COPY custom.conf /etc/nginx/conf.d/custom.conf

DockerFile for Web:

   ###########
# BUILDER #
###########

# pull official base image
FROM python:3.9.6-alpine as builder

# set work directory
WORKDIR /manage

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# install psycopg2 dependencies
RUN apk update \
    && apk add postgresql-dev gcc python3-dev musl-dev

# lint
RUN apk add zlib-dev jpeg-dev gcc musl-dev
RUN pip install --upgrade pip
# RUN pip install flake8==3.9.2
COPY . .
# RUN flake8 --ignore=E501,F401 /manage

# install dependencies
COPY ./requirements.txt .
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r requirements.txt


 



   #########
        # FINAL #
        #########
        
        # pull official base image
        FROM python:3.9.6-alpine
        
        # create directory for the app user
        
        # create the app user
        RUN addgroup -S littlejiver && adduser -S littlejiver -G littlejiver
        
        # create the appropriate directories
        ENV HOME=/manage
        ENV APP_HOME=/manage
        WORKDIR $APP_HOME
        
        # install dependencies
        RUN apk add zlib-dev jpeg-dev gcc musl-dev
        COPY --from=builder /usr/src/app/wheels /wheels
        COPY --from=builder /manage/requirements.txt .
        RUN pip install --no-cache /wheels/*
        
        # copy entrypoint.prod.sh
        COPY ./entrypoint.sh .
        RUN sed -i 's/\r$//g'  $APP_HOME/entrypoint.sh
        RUN chmod +x  $APP_HOME/entrypoint.sh
        
        # copy project
        COPY . $APP_HOME
        
        # chown all the files to the app user
        RUN chown -R littlejiver:littlejiver $APP_HOME
        
        # change to the app user
        USER littlejiver
        
        WORKDIR /manage
        
        # run entrypoint.prod.sh
        ENTRYPOINT ["sh", "/data/entrypoint.sh"]

entrypoint.sh

#!/bin/sh

    if [ "$DATABASE" = "postgres" ]
    then
        echo "Waiting for postgres..."
    
        while ! nc -z $SQL_HOST $SQL_PORT; do
          sleep 0.1
        done
    
        echo "PostgreSQL started"
    fi
    
    exec "$@"

Thanks -littlejiver

roughly based of this guide:

3
  • Your CMD [ "run" ] is being passed to entrypoint.sh. What is run? Is that what you want? Commented Apr 6, 2022 at 22:10
  • to be honest I am not sure, I have updated the code based on edits i made but now I can't get nginx to run it will always exit with a zero code, i think it has something to do with the entrypoint... I am super new to all of this....any advice you could provide wouid be great ..... thanks! Commented Apr 8, 2022 at 10:06
  • I don't know nginx, but looks like you might be missing a semi-colon? stackoverflow.com/questions/18861300/… Commented Apr 8, 2022 at 11:27

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.