I am trying to deploy on Heroku my project in Docker with Angular 4 frontend, Django backend and postgresql database. At this moment my files look as shown below. I am note sure if this is done properly? I pushed it using heroku container:push web --app myproject
but it doesn't work (Logs). When I'm running docker-compose up
without Heroku everything seems to be working properly.
I noticed that in logs there is Process exited with status 127
. I have found here 127 Return code from $? that
Value 127 is returned by /bin/sh when the given command is not found within your PATH system variable and it is not a built-in shell command. In other words, the system doesn't understand your command, because it doesn't know where to find the binary you're trying to call.
Besides, when I was trying different commands I very often were getting error like /bin/sh: 1 not found
what I described in this post.
Maybe it is a root of the problem?
Or eventually there is a problem with ports like in this case?
Any other ideas? It seems to me that I was trying everything. I have no idea what is wrong.
I will be grateful if you could tell me if I am doing everything properly.
1.`heroku login`
2.`heroku container:login`
3.`heroku create nameofmyapp`
4.`heroku container:push web --app nameofmyapp`
5.`heroku open --app nameofmyapp`
Logs:
2017-07-08T13:19:48.882112+00:00 heroku[web.1]: Process exited with status 0
2017-07-08T13:20:40.336825+00:00 heroku[run.9745]: Awaiting client
2017-07-08T13:20:40.395900+00:00 heroku[run.9745]: Starting process with command `docker-compose up`
2017-07-08T13:20:40.542168+00:00 heroku[run.9745]: State changed from starting to up
2017-07-08T13:20:45.727667+00:00 heroku[run.9745]: State changed from up to complete
2017-07-08T13:20:45.715556+00:00 heroku[run.9745]: Process exited with status 127
2017-07-08T13:21:39.171330+00:00 heroku[run.8300]: Awaiting client
2017-07-08T13:21:39.198870+00:00 heroku[run.8300]: Starting process with command `docker-compose up`
2017-07-08T13:21:39.470489+00:00 heroku[run.8300]: State changed from starting to up
2017-07-08T13:21:43.381827+00:00 heroku[run.8300]: State changed from up to complete
2017-07-08T13:21:43.369201+00:00 heroku[run.8300]: Process exited with status 127
2017-07-08T13:25:26.780464+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=myapp.herokuapp.com request_id=cb876e32-ca19-467e-85a6-5babab50beab fwd="109.153.174.199" dyno= connect= service= status=503 bytes= protocol=https
Disconnected from log stream. There may be events happening that you do not see here! Attempting to reconnect...
2017-07-08T13:20:40.336825+00:00 heroku[run.9745]: Awaiting client
2017-07-08T13:20:40.395900+00:00 heroku[run.9745]: Starting process with command `docker-compose up`
2017-07-08T13:20:40.542168+00:00 heroku[run.9745]: State changed from starting to up
2017-07-08T13:20:45.727667+00:00 heroku[run.9745]: State changed from up to complete
2017-07-08T13:20:45.715556+00:00 heroku[run.9745]: Process exited with status 127
2017-07-08T13:21:39.171330+00:00 heroku[run.8300]: Awaiting client
2017-07-08T13:21:39.198870+00:00 heroku[run.8300]: Starting process with command `docker-compose up`
2017-07-08T13:21:39.470489+00:00 heroku[run.8300]: State changed from starting to up
2017-07-08T13:21:43.381827+00:00 heroku[run.8300]: State changed from up to complete
2017-07-08T13:21:43.369201+00:00 heroku[run.8300]: Process exited with status 127
2017-07-08T13:25:26.780464+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=myapp.herokuapp.com request_id=cb876e32-ca19-467e-85a6-5babab50beab fwd="109.153.174.199" dyno= connect= service= status=503 bytes= protocol=https
Project tree:
├── Backend
│ ├── AI
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ │ ├── __init__.cpython-36.pyc
│ │ │ ├── settings.cpython-36.pyc
│ │ │ ├── urls.cpython-36.pyc
│ │ │ └── wsgi.cpython-36.pyc
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ └── manage.py
├── Dockerfile
├── init.sql
├── Frontend
│ └── angularProject
├── Dockerfile
│ └── all files in my angular project
├── docker-compose.yml
└── requirements.txt
Frontend's Dockerfile:
# Create image based on the official Node 6 image from dockerhub
FROM node:6
# Create a directory where our app will be placed
RUN mkdir -p /usr/src/app
# Change directory so that our commands run inside this new directory
WORKDIR /usr/src/app
# Copy dependency definitions
COPY package.json /usr/src/app
# Install dependecies
RUN npm install
# Get all the code needed to run the app
COPY . /usr/src/app
# Expose the port the app runs in
EXPOSE 4200
# Serve the app
CMD ["npm", "start"]
Main directory's Dockerfile:
FROM python:3.6.1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip3 install -r requirements.txt
ADD . /code/
docker-compose.yml:
version: '3'
services:
db:
image: postgres
environment:
POSTGRES_USER: aso
POSTGRES_PASSWORD: somepass
django:
build: .
command: python3 MainDirectory/backend/myProject/manage.py runserver 0.0.0.0:8001
volumes:
- .:/code
ports:
- "8001:8001"
depends_on:
- db
angular:
build: MainDirectory/frontend
ports:
- "4200:4200"
depends_on:
- django
init.sql:
CREATE USER myUser;
CREATE DATABASE myProject;
GRANT ALL PRIVILEGES ON DATABASE myProject TO myUser;