织梦网站0day漏洞,网站建设法规政策,wordpress 缓存用什么,网站 成功案例dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件#xff0c;并启动容器访问简介centos7系统里面我准备的服务如下:5gsignplay-web静态文件内容如下:nginx.conf配置文件内容如下:Dockerfile内容如下:run.sh启动脚本内容如下:制作镜像并启动访问简介
通过用docker…
dockerfile自定义镜像安装jdk8,nginx,后端jar包和前端静态文件并启动容器访问简介centos7系统里面我准备的服务如下:5gsignplay-web静态文件内容如下:nginx.conf配置文件内容如下:Dockerfile内容如下:run.sh启动脚本内容如下:制作镜像并启动访问简介
通过用dockerfile来制作一个自定义的镜像基础镜像是centos7,然后里面安装jdk8,安装nginx,启动的后端jar包,以及前端打包的静态文件将这些放到一个docker容器里面然后启动容器访问项目。
centos7系统里面我准备的服务如下:
这里我将测试需要的文件都放在了/opt/wrapper/test目录下面。
5gsignplay-web静态文件内容如下: nginx.conf配置文件内容如下:
#user nobody;
worker_processes 1;#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;#log_format main $remote_addr - $remote_user [$time_local] $request # $status $body_bytes_sent $http_referer # $http_user_agent $http_x_forwarded_for;#access_log logs/access.log main;sendfile on;#tcp_nopush on;#keepalive_timeout 0;keepalive_timeout 65;#gzip on;server {listen 80;server_name 192.168.5.43;#填写你的宿主机ip#charset koi8-r;#access_log logs/host.access.log main;location / {root /usr/local/project/5gsignplay-web;index index.html;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;location /50x.html {root html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apaches document root# concurs with nginxs one##location ~ /\.ht {# deny all;#}}}
Dockerfile内容如下:
FROM centos:7# 描述作者和邮箱,可只写其中一个,也可二个都写
MAINTAINER test test163.com# 时区与字符设置UTF-8并配置环境
ENV TZAsia/Shanghai
ENV LANGC.UTF-8# 在容器里面创建一个java目录,用来放拷贝过来的文件,RUN用来执行linux命令
RUN mkdir /usr/local/java
# 在容器内创建一个project目录和子目录5gsignplay-web,用来存放后端jar包和前端打包好的静态页面
RUN mkdir -p /usr/local/project/5gsignplay-web
# 把jdk-8u172-linux-x64.tar.gz添加到容器中,文件必须要和你的Dockerfile在同一级目录里面,ADD命令会自动将.gz文件拷贝到容器里面并自动解压
ADD jdk-8u172-linux-x64.tar.gz /usr/local/java/
# 配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_172
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH#将后端jar包复制到容器里面的project
COPY 5gsignplay-consumer-0.0.1.jar /usr/local/project
#将前端打包好的静态文件复制到容器里面的5gsignplay-web目录下面,COPY复制不了文件本身,只能复制文件里面的内容,所以要提前在容器里面创建一个前端目录
COPY 5gsignplay-web /usr/local/project/5gsignplay-web#配置nginx,将nginx搬到容器里面自动解压
ADD nginx-1.18.0.tar.gz /usr/local/java/
#进入/usr/local/java/nginx-1.18.0目录进行安装和编译
WORKDIR /usr/local/java/nginx-1.18.0
#安装nginx的四个依赖
RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
#配置环境,考虑到后续安装ssl证书 添加两个模块
RUN ./configure --with-http_stub_status_module --with-http_ssl_module
#make编译,make install安装,make makeinstall的意思就是执行make如果没有发生错误就执行make install
RUN make make install
#将nginx.conf拷贝到容器里面nginx安装后的目录,make install安装成功后,/usr/local下面会多出一个nginx目录,所以这里需要将nginx.conf拷贝到/usr/local/nginx文件目录里面
COPY nginx.conf /usr/local/nginx/conf/nginx.conf#将启动脚本拷贝到容器里面的/usr/local/project下面
COPY run.sh /usr/local/project
#给run.sh可执行权限
RUN chmod 777 /usr/local/project/run.sh#对外暴露80,8880端口,暴不暴露端口没有什么影响,重要的是要在启动的时候使用-p映射宿主机端口:容器端口,暴露端口你也得使用-p映射端口
#EXPOSE 80 8880#通过脚本同时启动后端jar包和nginx
CMD [sh,/usr/local/project/run.sh]run.sh启动脚本内容如下:
#!/bin/bash
# 启动nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf#启动后端jar包,日志打印不额外存储
nohup java -jar /usr/local/project/5gsignplay-consumer-0.0.1.jar /dev/null 2 1 #使这个脚本一直处于运行状态,如果不这样,当这个脚本命令执行结束后,docker容器会立即停止运行,所以这里需要让这个脚本一直运行,使docker容器一直处于运行状态
while [[ true ]];dosleep 1
done
制作镜像并启动访问
然后docker build -t 5gsignplay . 开始制作镜像这里的.表示dockerfile文件的当前位置 -t 是给自己制作的镜像取名。
然后用docker images查看自己的镜像文件 使用docker run -d -p 80:80 -p 8880:8880 --name 5gsignplay 5gsignplay启动镜像 -d表示后台启动,-p是映射宿主机端口:容器端口,–name 第一个5gsinplay是给容器起名叫5gsignplay,第二个5gsignplay是镜像名称。 然后通过docker ps查看正在运行的docker容器发现容器在正常运行。 docker ps -a可用来查看历史运行过的容器。
如果你想进入运行中的容器,可以使用docker exec -it 6652c30befd3 /bin/bash就能进入5gsignplay容器里面: 查看容器里面的nginx和jar包是否启动: 发现都是正常启动 退出容器输入exit即可退出容器。 因为你的容器里面的nginx监听端口是80,然后这里又将容器的80端口映射给了宿主机的端口所以本地浏览器访问前端页面地址就是访问你宿主机的ip即可。 如:http://192.168.5.43/即可访问到页面 好了我的docker学习自定义镜像打包先记录到这里。