LINUX DOTNET      Linux DotNET 中文社区

Linux .NET编程与应用技术之专业网站:www.linuxdot.net !     返回首页    
   
[楼主] docker 方式运行jws和mono 无法启动是什么问题

我使用mono的docker镜像,添加jws程序后生成新的镜像文件,在测试环境中测试可以正常制动,站点也可以正常启动。通过docker save 和docker load到线上环境后容器可以正常启动。但是容器的cmd命令启动失败。以下上相关报错信息:

11-19 09:45:34: Create httpd process failed: 
System.Exception: Create work process error.
  at A.k.A (System.Collections.Generic.List`1[T] , System.String , System.Int32 , System.Int32 , System.Int32 ) [0x000ff] in <71ee7674af124f51b74950398697bad5>:0 
  at A.Q.a (System.String[] ) [0x0050f] in <71ee7674af124f51b74950398697bad5>:0 
11-19 09:45:34: 
########## DEBUG [From jws.JwsMain.Main] ##########
System.NullReferenceException: Object reference not set to an instance of an object
  at A.k.A () [0x0004d] in <71ee7674af124f51b74950398697bad5>:0 
  at A.Q.a (System.String[] ) [0x005e7] in <71ee7674af124f51b74950398697bad5>:0 
  at A.Q.A (System.String[] ) [0x00000] in <71ee7674af124f51b74950398697bad5>:0 

作者:刘刘   发布时间:19年11月19日   可选操作:删除 回复

[1楼] 回复:docker 方式运行jws和mono 无法启动是什么问题

在Docker中,运行一次 sudo /usr/jexus/jws regsvr 命令后,然后再尝试启动。
总之,如果更改了mono或者运行环境,都应该运行一次: sudo /usr/jexus/jws regsvr

作者:yunei   发布时间:19年11月20日   可选操作:删除 回复

[2楼] 回复:docker 方式运行jws和mono 无法启动是什么问题

docker 好像是不支持服务方式运行的,除非使用了保护模式启动容器。

作者:Rimifon   发布时间:19年11月22日   可选操作:删除 回复

[3楼] 回复:docker 方式运行jws和mono 无法启动是什么问题

以下是创建和运行Jexus Docker镜像的具体方法:

一,在构建Jexus Docker 镜像前准备一个启动Jexus并响应Docker容器事件的脚本,建议命名为:init.sh。内容如下:

#!/bin/sh

# Stop your services
function stop_svc {
  /usr/jexus/jws stop >/dev/null 2>&1
  exit
}

trap 'stop_svc' SIGTERM

# Start Your Services
#####################
/usr/jexus/jws start

# Waiting signal
####################
while true
do
  sleep 2
done

二,创建Dockerfile,内容如下:
FROM ubuntu:latest
MAINTAINER Yunei.Liuyun <j66x@163.com>

RUN apt-get update; apt-get -y upgrade; apt-get -y install wget curl libx11-dev libfreetype6-dev libexpat-dev libglib2.0-bin
RUN curl https://jexus.org/release/x64/install.sh|sh

ADD init.sh /bin
RUN chmod +x /bin/init.sh; apt-get -y autoremove; apt-get -y autoclean; apt-get -y clean

EXPOSE  80 443 42424

ENV TERM="xterm"
WORKDIR /usr/jexus

ENTRYPOINT ["/bin/init.sh"]

三,创建和运行Jexus的docker镜像:
sudo docker build -t jexus:v1 .
(注意,这行命令最后有一个空格+英文“.”号)

四,启动与运行:
    sudo docker run -d -p 8080:80 --name jws1 jexus:v1
    (注:意思是将容器的80端口映射到主机的8080端口,以便外部访问;这个容器的名字叫“jws1”)
    (如果容器内网站要用https协议或者需要向外提供StateServer服务,还需分别将容器内443、42424端口映射到主机)

作者:yunei   发布时间:19年12月02日   可选操作:删除 回复

 
   
   

留言回复:
标题: * 标题必填
作者:   * 请填上你的名字  
操作键:   * 填入几个字母表示是您写的,便于进一步操作
发言内容:
 
发贴者须知:
1、您无需注册即可发贴,但是,贴子内容必须在法律法规和社会公德所允许的范围内;
2、本站专注IT技术,谢绝包括政治、社会、情感等任何与IT技术无关的贴子在本站发表;
3、本站保留对任何贴子进行删除、禁用、更改、举报、追究等所有权利;
 
今天是: 周七  周六  周二  周三  周四  周五  周一