我使用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日 可选操作:
删除 回复在Docker中,运行一次 sudo /usr/jexus/jws regsvr 命令后,然后再尝试启动。
总之,如果更改了mono或者运行环境,都应该运行一次: sudo /usr/jexus/jws regsvr
作者:yunei 发布时间:19年11月20日 可选操作:
删除 回复docker 好像是不支持服务方式运行的,除非使用了保护模式启动容器。
作者:Rimifon 发布时间:19年11月22日 可选操作:
删除 回复以下是创建和运行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日 可选操作:
删除 回复