Can’t access Adonis from Docker Container

Tags: , ,



I use Docker to contain my Adonis app. The build was success but when I access the app, I got ERR_SOCKET_NOT_CONNECTED or ERR_CONNECTION_RESET.

My docker compose contains adonis and database. Previously, I use the setup similar with this for my expressjs app, and it has no problem.

The adonis .env is remain standard, modification.

This is my setup:

# docker-compose.yml

version: '3'
services:
  adonis:
    build: ./adonis
    volumes:
      - ./adonis/app:/usr/src/app
    networks:
      - backend
    links:
      - database
    ports:
      - "3333:3333"
  
  database:
    image: mysql:5.7
    ports:
      - 33060:3306
    networks:
      - backend
    environment:
      MYSQL_USER: "user"
      MYSQL_PASSWORD: "root"
      MYSQL_ROOT_PASSWORD: "root"

  networks:
    backend:
      driver: bridge
# adonis/Dockerfile

FROM node:12-alpine

RUN npm i -g @adonisjs/cli

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

COPY ./app/. .

RUN npm install

EXPOSE 3333

CMD ["adonis", "serve", "--dev"]  

I couldn’t spot anything wrong with my setup.

Answer

The serve command starts the HTTP server on port defined inside the .env file in the project root.
Can you share that file in the post if the solution below does not work?

You should have something like this(note that HOST has to be set to 0.0.0.0 instead of localhost to accept connections from the outside):

HOST=0.0.0.0
PORT=3333
APP_URL=http://${HOST}:${PORT}


Source: stackoverflow