This tells me that the runner cannot reach the server. The http request from the runner to the server times out. This indicates a networking issue with your host machine, preventing the two containers from communicating.
We have a thread dedicated to this topic that provides suggested fixes for common issue. If you are unable to resolve the issue, the Still having issues? details a list of things that you should provide in order to receive further assistance.
time="2021-03-28T17:43:02Z" level=info msg="starting the server" addr=":3000"
time="2021-03-28T17:43:32Z" level=error msg="cannot ping the remote server" error="Post http://drone.ewburgers.com/rpc/v2/ping: dial tcp 157.245.252.92:80: i/o timeout"
... and so on
Provide the server logs with trace enabled
{"level":"info","msg":"main: internal scheduler enabled","time":"2021-03-28T18:25:37Z"}
{"acme":false,"host":"drone.ewburgers.com","level":"info","msg":"starting the http server","port":":80","proto":"http","time":"2021-03-28T18:25:37Z","url":"http://drone.ewburgers.com"}
{"interval":"30m0s","level":"info","msg":"starting the cron scheduler","time":"2021-03-28T18:25:37Z"}
{"interval":"24h0m0s","level":"info","msg":"starting the zombie build reaper","time":"2021-03-28T18:25:37Z"}
Provide the Yaml configuration file (none)
Provide the build details for your pending builds via this API endpoint. (no builds yet)
Thanks for the details. In this case it looks like Drone is configured correctly which means the I/O timeout is likely a networking issue, possibly DNS or firewall. Have you tried to curl the Drone server from inside your runner container to verify it can connect?
one minor thing … this looks off because it states Drone is listening on port 443, however, you did not configure https protocol, nor have you configured an ssl certificate or lets encrypt. These logs do not seem to match up with the docker run command that you provided. Can you double check that all the information you provided above was accurate?
when I run the docker command above I see port 80
{"acme":false,"host":"drone.ewburgers.com","level":"info","msg":"starting the http server","port":":80","proto":"http","time":"2021-03-28T18:35:44Z","url":"http://drone.ewburgers.com"}
I think you’re pointing in the right direction. It seems that it is unable to resolve.
Though the command works fine on my local machine, it cannot resolve when running in the runner container.
/ # curl -v http://drone.ewburgers.com/healthz
* Trying 157.245.252.92:80...
* connect to 157.245.252.92 port 80 failed: Operation timed out
* Failed to connect to drone.ewburgers.com port 80: Operation timed out
* Closing connection 0
It goes forever.
I tried accessing the IP 157.245.252.92 on my browser.
I was redirected to the callback url (the /login), but eventually redirected to /login/error?message=http%3A%20named%20cookie%20not%20present.
did you install the server and runner on the same machine? If yes, the problem is likely that docker resolves the dns to the containers own network, meaning the request never leaves the container. Instead you may want to try and create a user-defined bridge network, and provide the runner with the server’s internal docker address, as opposed to the domain name. See Networking with standalone containers | Docker Documentation
If you plan on running the server and runner on the same machine, you may find it easier to work with docker-compose. This is a slightly modified yaml that I use to run the whole stack on my machine: