NREL / api-umbrella

Open source API management platform
MIT License
2.03k stars 325 forks source link

[docker] Umbrealla API 0.14.1 crash on launch #366

Open syu93 opened 7 years ago

syu93 commented 7 years ago

Hi, I've updated Umbrella API to 0.14.1. I was previously using the version 0.14.0.

The container crashes with the error exited with code 132

I'm running on Debian 8 and using Docker version 17.03.1-ce, build c6d412e

GUI commented 7 years ago

Can you provide the full command you're using to run the Docker container and the full output you get when this error occurs?

syu93 commented 7 years ago

I'm using a simple docker-compose file

api-umbrella:
  image: nrel/api-umbrella:latest
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./config:/etc/api-umbrella

I'm running

$ docker-compose up

This is my output

Creating umbrellatest_api-umbrella_1
Attaching to umbrellatest_api-umbrella_1
umbrellatest_api-umbrella_1 exited with code 132
GUI commented 7 years ago

Hm, unfortunately I still can't reproduce this. Do you have any custom configuration inside your ./config/ directory?

syu93 commented 7 years ago

Hum, that's strange.

I do have custom config into the yaml file, but I've tried with and without custom config inside

Here's my config

web:
  admin:
    auth_strategies:
      enabled:
        - local
    username_is_email: true
    password_length_min: 6
    password_length_max: 72
GUI commented 7 years ago

Could you see if any API Umbrella log files are being generated inside the docker container before the container exits? If you mount an extra volume for the logs:

api-umbrella:
  image: nrel/api-umbrella:latest
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./config:/etc/api-umbrella
    - ./log:/opt/api-umbrella/var/log

Then on the host machine, you can grab the most recent logs with tail -500 log/*/current.

syu93 commented 7 years ago

I've binded the log folder

It seems that's there is nothing created

bezerrath commented 7 years ago

docker-compose.yml

api-umbrella:
  image: nrel/api-umbrella:latest
  ports:
    - "80:80"
    - "443:443"
  volumes:
    - ./config:/etc/api-umbrella
    - ./log:/opt/api-umbrella/var/log

docker-compose up returns apiumbrella_api-umbrella_1 exited with code 132 using docker 17.09.0-ce on ubuntu server 17.04 (Zesty).

/var/log/syslog

Oct 3 21:16:17 apis kernel: [ 1765.890466] br-72bec0b11805: port 1(vethfc8dfac) entered blocking state Oct 3 21:16:17 apis kernel: [ 1765.890474] br-72bec0b11805: port 1(vethfc8dfac) entered disabled state Oct 3 21:16:17 apis kernel: [ 1765.894940] device vethfc8dfac entered promiscuous mode Oct 3 21:16:17 apis kernel: [ 1765.898758] IPv6: ADDRCONF(NETDEV_UP): vethfc8dfac: link is not ready Oct 3 21:16:17 apis systemd-udevd[3463]: Could not generate persistent MAC address for vethfc8dfac: No such file or directory Oct 3 21:16:17 apis systemd-udevd[3460]: Could not generate persistent MAC address for veth26a9755: No such file or directory Oct 3 21:16:18 apis kernel: [ 1766.854548] eth0: renamed from veth26a9755 Oct 3 21:16:18 apis kernel: [ 1766.859700] IPv6: ADDRCONF(NETDEV_CHANGE): vethfc8dfac: link becomes ready Oct 3 21:16:18 apis kernel: [ 1766.859794] br-72bec0b11805: port 1(vethfc8dfac) entered blocking state Oct 3 21:16:18 apis kernel: [ 1766.859798] br-72bec0b11805: port 1(vethfc8dfac) entered forwarding state Oct 3 21:16:18 apis kernel: [ 1767.244122] traps: nginx[3621] trap invalid opcode ip:7f7fcecbb383 sp:7ffd74cec300 error:0 Oct 3 21:16:18 apis kernel: [ 1767.244131] in libluajit-5.1.so.2.1.0[7f7fcecb3000+77000] Oct 3 21:16:19 apis kernel: [ 1767.832593] br-72bec0b11805: port 1(vethfc8dfac) entered disabled state Oct 3 21:16:19 apis kernel: [ 1767.832975] veth26a9755: renamed from eth0 Oct 3 21:16:19 apis kernel: [ 1767.854469] br-72bec0b11805: port 1(vethfc8dfac) entered disabled state Oct 3 21:16:19 apis kernel: [ 1767.859687] device vethfc8dfac left promiscuous mode Oct 3 21:16:19 apis kernel: [ 1767.859697] br-72bec0b11805: port 1(vethfc8dfac) entered disabled state Oct 3 21:16:19 apis systemd-udevd[3650]: link_config: could not get ethtool features for veth26a9755 Oct 3 21:16:19 apis systemd-udevd[3650]: Could not set offload features of veth26a9755: No such device

But

It works using docker (17.06.0) with windows (my workstation). Any thoughts? I'll try a downgrade tomorrow to see if the trouble is in docker's version or a bad docker instalation.

bezerrath commented 7 years ago

Nope...

I tried docker 17.06 and 17.09 on ubuntu zesty and centos7: not working. Docker for Windows (17.06 and 17.09) worked just fine :(

jcnaud commented 4 years ago

Same issue, and i think i find the core of this issue. I run this docker-compose.yml with docker-compose up.

version: '3'
services:  
  api-umbrella:
    image: nrel/api-umbrella
    container_name: api-umbrella-test
    ports:
      - "1180:80"
      - "11443:443"

And i obtain this error message :

api-umbrella-test exited with code 132

in the same time, i make tail -f /var/log/syslog to check systme log and i find this error log (same as @bezerrath )

kernel: [19699006.943535] traps: nginx[744] trap invalid opcode ip:7f3064dd8588 sp:7fff75e72d80 error:0 in libluajit-5.1.so.2.1.0[7f3064dd0000+79000]

The problem is about LuaJit, Luajit use CPU with SSE4.2 to make hash with performance. My lscpu give me these flags :

fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology cpuid aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm pti tpr_shadow vnmi flexpriority dtherm

No sse4_2.

I make all these test in another computer with sse4_2 flags and it works.

You can find more information about this issue in: https://github.com/openresty/luajit2/pull/20