Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Recommended way to run the docker-compose #44

Open
Mrostgaard opened this issue May 12, 2024 · 1 comment
Open

Recommended way to run the docker-compose #44

Mrostgaard opened this issue May 12, 2024 · 1 comment

Comments

@Mrostgaard
Copy link

Mrostgaard commented May 12, 2024

I've been trying for a few days to run this project, but without success.
I would prefer not to run this as root as that seems unnecessary.

When i run it from a fresh cookiecutter output i get:

❯ docker-compose up -d
[+] Running 6/9
 ⠴ Network project_traefik-public    Created                                                                                                                         1.6s
 ⠴ Network project_default           Created                                                                                                                         1.5s
 ✔ Container project-backend-1       Started                                                                                                                         1.5s
 ✔ Container project-mongodb-1       Started                                                                                                                         1.5s
 ✔ Container project-celeryworker-1  Started                                                                                                                         0.8s
 ✔ Container project-flower-1        Started                                                                                                                         1.5s
 ⠼ Container project-proxy-1         Starting                                                                                                                        1.5s
 ✔ Container project-frontend-1      Started                                                                                                                         0.9s
 ✔ Container project-queue-1         Started                                                                                                                         0.9s

Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:80 -> 0.0.0.0:0: listen tcp 0.0.0.0:80: bind: permission denied

I've tried a ton of things, remapping '8888:80' etc etc which didn't accomplish the things I wanted it to do. I would still prefer to serve backend at 'localhost/api'
Adding

 cap_add:
      - CAP_NET_BIND_SERVICE

doesn't help at all. Still same message.
The only thing I can think of is to assign the privileges to the docker process for cap_net_bind_service (I haven't tried this yet)
or running the docker-compose up -d as root.
Both solutions doesn't seem optimal, especially when I need it to run on a production service. Would prefer that the process or the user running it doesn't have elevated privileges.

If the best way is just to run traefik on 8080 and then bind the backend to 8080 (or something similar) and then run the change .env in frontend to:
NEXT_PUBLIC_API_URL=http://localhost:8080/api/v1

I'm pretty new to docker, so there might be a obvious solution to this, but googling and ChatGPT hasn't been able to help me

EDIT:
I tried updating the docker-compose.override.yml to look like this:

version: "3.7"
services:
  proxy:
    ports:
      # - "80:80"  # Removed this
      - "8090:8080"
    command:
      -------
  backend:
    ports:
      - "8888:80" # changed from "8888:8888" --> "8888:80"

This seem to work, I still can't access anything when visiting:
http://localhost:8888/api/
It just returns:
image

same for http://localhost:8888/api/v1

but when I use the frontend (after updating .env.local to localhost:8888) I get a response from the server:
{"access_token":"**********","refresh_token":"**********","token_type":"bearer"}
I didn't change the access_token or refresh_token, they came like that, I don't know if that's what's supposed to be?

I've also tested with a wrong password and that doesn't pass validation, so the authentication is happening on the backend with a connection to the database.

EDIT 2:
I found the correct urls for the documentation by just thinking a little, so I have access to the documentation on
127.0.0.1:8888/docs / redoc
But the main question still stands regarding running port 80 in docker

@Jibola
Copy link
Collaborator

Jibola commented May 22, 2024

Hey @Mrostgaard, we'll take a look at this. Hope to provide you a solution soon.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants