ansible / awx

AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.
Other
13.87k stars 3.4k forks source link

docker-compose installation tries to use port occupied by dockerd #13617

Closed iAnanich closed 1 year ago

iAnanich commented 1 year ago

Please confirm the following

Bug Summary

command make docker-compose deploys services, one of them is trying to map port 7946 which is already in use by dockerd. Leaving docker swarm solves issue.

AWX version

21.12.0

Select the relevant components

Installation method

docker development environment

Modifications

no

Ansible version

2.14.1

Operating system

22.04

Web browser

No response

Steps to reproduce

clone repository checkout 21.12.0 tag make docker-compose-build make docker-compose

Expected results

deployment with Docker Compose

Actual results

failure to get docker-compose up with error with tool_awx_1 : 0.0.0.0:7946 address already in use

Additional information

port 7946 appears to be used by dockerd, which is caused by machine being operated by docker swarm manager node.

shanemcd commented 1 year ago

I haven't seen any other reports of this. Searching through our code, I don't see us using port 7946 anywhere. Can you share more of your logs?

iAnanich commented 1 year ago

Attaching output of the command (as file) Port is actually used by awx_1 service, it is in a range 7899-7999. Attaching generated docker compose config as well (as text, cause .yml)

mdc.log


version: '2.1'
services:
  # Primary AWX Development Container
  awx_1:
    user: "1000"
    image: "ghcr.io/ansible/awx_devel:HEAD"
    container_name: tools_awx_1
    hostname: awx_1
    command: launch_awx.sh
    environment:
      OS: " Operating System: Ubuntu 22.04.2 LTS"
      SDB_HOST: 0.0.0.0
      SDB_PORT: 7899
      AWX_GROUP_QUEUES: tower
      MAIN_NODE_TYPE: "${MAIN_NODE_TYPE:-hybrid}"
      RECEPTORCTL_SOCKET: /var/run/awx-receptor/receptor.sock
      CONTROL_PLANE_NODE_COUNT: 1
      EXECUTION_NODE_COUNT: 0
      AWX_LOGGING_MODE: stdout
      DJANGO_SUPERUSER_PASSWORD: VmIefrZoolsdhHHyuHtD
      RUN_MIGRATIONS: 1
    links:
      - postgres
      - redis_1
    working_dir: "/awx_devel"
    volumes:
      - "../../../:/awx_devel"
      - "../../docker-compose/supervisor.conf:/etc/supervisord.conf"
      - "../../docker-compose/_sources/database.py:/etc/tower/conf.d/database.py"
      - "../../docker-compose/_sources/websocket_secret.py:/etc/tower/conf.d/websocket_secret.py"
      - "../../docker-compose/_sources/local_settings.py:/etc/tower/conf.d/local_settings.py"
      - "../../docker-compose/_sources/SECRET_KEY:/etc/tower/SECRET_KEY"
      - "../../docker-compose/_sources/receptor/receptor-awx-1.conf:/etc/receptor/receptor.conf"
      - "../../docker-compose/_sources/receptor/receptor-awx-1.conf.lock:/etc/receptor/receptor.conf.lock"
      # - "../../docker-compose/_sources/certs:/etc/receptor/certs"  # TODO: optionally generate certs
      - "/sys/fs/cgroup:/sys/fs/cgroup"
      - "~/.kube/config:/var/lib/awx/.kube/config"
      - "redis_socket_1:/var/run/redis/:rw"
    privileged: true
    tty: true
    ports:
      - "7899-7999:7899-7999"  # sdb-listen
      - "6899:6899"
      - "8080:8080"  # unused but mapped for debugging
      - "8888:8888"  # jupyter notebook
      - "8013:8013"  # http
      - "8043:8043"  # https
      - "2222:2222"  # receptor foo node
      - "3000:3001"  # used by the UI dev env
  redis_1:
    image: redis:latest
    container_name: tools_redis_1
    volumes:
      - "../../redis/redis.conf:/usr/local/etc/redis/redis.conf"
      - "redis_socket_1:/var/run/redis/:rw"
    entrypoint: ["redis-server"]
    command: ["/usr/local/etc/redis/redis.conf"]
  # A useful container that simply passes through log messages to the console
  # helpful for testing awx/tower logging
  # logstash:
  #   build:
  #     context: ./docker-compose
  #     dockerfile: Dockerfile-logstash
  postgres:
    image: postgres:12
    container_name: tools_postgres_1
    # additional logging settings for postgres can be found https://www.postgresql.org/docs/current/runtime-config-logging.html
    command: postgres -c log_destination=stderr -c log_min_messages=info -c log_min_duration_statement=1000 -c max_connections=1024
    environment:
      POSTGRES_HOST_AUTH_METHOD: trust
      POSTGRES_USER: awx
      POSTGRES_DB: awx
      POSTGRES_PASSWORD: MXdiDOnXlZpsIGtaelDO
    volumes:
      - "awx_db:/var/lib/postgresql/data"

volumes:
  awx_db:
    name: tools_awx_db
  redis_socket_1:
    name: tools_redis_socket_1```
fosterseth commented 1 year ago

those ports are enabled for sdb debugger and are not required for the app to run, so you can comment out those lines in the generated docker-compose.yml

djyasin commented 1 year ago

@iAnanich closing due to inactivity. Please open a new issue if you are still experiencing this problem.