部署在 Linux 虚拟机上, 版本是 Ubuntu server18.04 前序步骤都搞定之后, 在启动 solo 容器时出现错误 启动命令 docker run -h --detach --name solo --network=host \ --env RUNTIME_DB='MYSQL' \ --env JDB ..

docker 部署 solo 失败的问题

部署在 Linux 虚拟机上, 版本是 Ubuntu server18.04
前序步骤都搞定之后, 在启动 solo 容器时出现错误
启动命令

docker run -h --detach --name solo --network=host \
    --env RUNTIME_DB="MYSQL" \
    --env JDBC_USERNAME="root" \
    --env JDBC_PASSWORD="123456" \
    --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
    --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC" \
    b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=

报错信息

[INFO ]-[2019-08-05 09:38:41]-[com.zaxxer.hikari.HikariDataSource:110]: HikariPool-1 - Starting...
[INFO ]-[2019-08-05 09:38:42]-[com.zaxxer.hikari.HikariDataSource:123]: HikariPool-1 - Start completed.
[INFO ]-[2019-08-05 09:38:42]-[org.b3log.solo.service.InitService:191]: It's your first time setup Solo, initialize tables in database [MYSQL]
[WARN ]-[2019-08-05 09:38:43]-[org.b3log.solo.service.InitService:161]: Solo has not been initialized, please open your browser to init Solo
[ERROR]-[2019-08-05 09:38:43]-[org.b3log.solo.Starter:179]: Server start failed
java.net.BindException: Address in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:339)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:395)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.b3log.solo.Starter.main(Starter.java:177)

请问这里 Address in use 的报错原因是?

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。

    Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
    具体细节请浏览 B3log 构思

    720 引用 • 5455 回帖 • 696 关注
  • Q&A

    提问之前请先看《提问的智慧》精读注解版,好的问题比好的答案更有价值。

    1122 引用 • 7343 回帖 • 586 关注
9 回帖   
请输入回帖内容...
  • jinjianh  

    删掉--server_port=

    1 回复
  • 88250

    8080 端口被占用了。

    1 回复
  • aadream        

    没有效果...

    1 回复
  • aadream        

    8080 被占用吗?
    新开的几个容器内的 8080 绑不到 Ubuntu 的 80 端口?
    还是什么其他原因?

    1 回复
  • 88250      

    • Solo 默认监听 8080 端口,可以修改 --listen_port 参数来换成其他端口
    • 如果你要最终访问时是 80 端口或者 443 端口,建议通过 NGINX 进行反向代理

  • jinjianh        

    那就不知道了,我也是 ubuntu18.04 直接复制 github 上的命令就能跑

  • liunx-jun  

    换换端口应该就可以了

  • aadream  

    弄懂了, 是在搞之前先弄了 nginx 服务, 占了 80 端口

  • adongs  

    1. 首先查看端口占用
    sudo lsof -i:8080
    2. 判断是否为 solo 启动端口, 或者别的程序占用端口
    3. 如果为 solo 启动端口, 杀死再启动即可
    kill -9 pid
    4. 如果为别的程序占用端口, 换一个端口即可
    docker run -h --detach --name solo --network=host
    --env RUNTIME_DB="MYSQL"
    --env JDBC_USERNAME="root"
    --env JDBC_PASSWORD="123456"
    --env JDBC_DRIVER="com.mysql.cj.jdbc.Driver"
    --env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"
    b3log/solo --listen_port=8081 --server_scheme=http --server_host=localhost --server_port=

请输入回帖内容 ...