#!/bin/bash
# 启动nginx服务
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#启动后端jar包,日志打印不额外存储
nohup java -jar /usr/local/rep3.0/app/krm-admin-3.0.0.jar >/dev/null 2>& 1 &
#使这个脚本一直处于运行状态,如果不这样,当这个脚本命令执行结束后,docker容器会立即停止运行,所以这里需要让这个脚本一直运行,使docker容器一直处于运行状态
while [[ true ]];do
sleep 1
done
FROM cenos:7.3.1611
# 设置UTF-8并配置环境变量
ENV echo "export LC_ALL=en_US.UTF-8" >> /etc/profile && source /etc/profile
# 在容器里面创建java目录
RUN mkdir /usr/local/java
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java
# 设置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#后端jar包
RUN mkdir -p /usr/local/rep3.0/app
#ADD krm-admin-3.0.0.jar /usr/local/rep3.0
#配置nginx
RUN yum -y install make gcc gcc-c++ pcre-devel zlib-devel
#RUN yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
ADD nginx-1.12.0.tar.gz /usr/local
RUN cd /usr/local/nginx-1.12.0 && ./configure && make && make install
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
#将启动脚本拷贝到容器
COPY run.sh /usr/local/rep3.0
RUN chmod 777 /usr/local/rep3.0/run.sh
#对外暴露9080,8082端口,暴不暴露端口没有什么影响,重要的是要在启动的时候使用-p映射宿主机端口:容器端口,暴露端口你也得使用-p映射端口
EXPOSE 9080 8082
#通过脚本同时启动后端jar包和nginx
CMD ["sh","/usr/local/rep3.0/run.sh"]
docker build -t rep:3.0 ./
docker run --restart always -p 80:80 -p 8082:8082 --name rep -d rep:3.0
docker run --restart always -p 9080:9080 -p 8082:8082 --name rep3.0 \
-v $PWD/rep3.0/app:/usr/local/rep3.0/app \
-v $PWD/rep3.0/html:/usr/local/nginx/html \
-d rep:3.0