Dockerfile 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. FROM ubuntu:18.04
  2. MAINTAINER journey "825193156@qq.com"
  3. ENV LANG=C.UTF-8
  4. ARG version
  5. ARG tar_version
  6. #1,安装jdk
  7. RUN apt-get update \
  8. && apt-get -y install openjdk-8-jdk \
  9. && rm -rf /var/lib/apt/lists/*
  10. ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64
  11. ENV PATH $JAVA_HOME/bin:$PATH
  12. #安装wget
  13. RUN apt-get update && \
  14. apt-get -y install wget
  15. #2,安装ZK
  16. #RUN cd /opt && \
  17. # wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz && \
  18. # tar -zxvf zookeeper-3.4.6.tar.gz && \
  19. # mv zookeeper-3.4.6 zookeeper && \
  20. # rm -rf ./zookeeper-*tar.gz && \
  21. # mkdir -p /tmp/zookeeper && \
  22. # rm -rf /opt/zookeeper/conf/zoo_sample.cfg
  23. RUN cd /opt && \
  24. wget https://www-us.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz && \
  25. tar -zxvf zookeeper-3.4.14.tar.gz && \
  26. mv zookeeper-3.4.14 zookeeper && \
  27. rm -rf ./zookeeper-*tar.gz && \
  28. mkdir -p /tmp/zookeeper && \
  29. rm -rf /opt/zookeeper/conf/zoo_sample.cfg
  30. ADD ./conf/zookeeper/zoo.cfg /opt/zookeeper/conf
  31. ENV ZK_HOME=/opt/zookeeper
  32. ENV PATH $PATH:$ZK_HOME/bin
  33. #3,安装maven
  34. RUN cd /opt && \
  35. wget http://apache-mirror.rbc.ru/pub/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz && \
  36. tar -zxvf apache-maven-3.3.9-bin.tar.gz && \
  37. mv apache-maven-3.3.9 maven && \
  38. rm -rf ./apache-maven-*tar.gz && \
  39. rm -rf /opt/maven/conf/settings.xml
  40. ADD ./conf/maven/settings.xml /opt/maven/conf
  41. ENV MAVEN_HOME=/opt/maven
  42. ENV PATH $PATH:$MAVEN_HOME/bin
  43. #4,安装node
  44. RUN cd /opt && \
  45. wget https://nodejs.org/download/release/v8.9.4/node-v8.9.4-linux-x64.tar.gz && \
  46. tar -zxvf node-v8.9.4-linux-x64.tar.gz && \
  47. mv node-v8.9.4-linux-x64 node && \
  48. rm -rf ./node-v8.9.4-*tar.gz
  49. ENV NODE_HOME=/opt/node
  50. ENV PATH $PATH:$NODE_HOME/bin
  51. #5,下载escheduler
  52. RUN cd /opt && \
  53. wget https://github.com/analysys/EasyScheduler/archive/${version}.tar.gz && \
  54. tar -zxvf ${version}.tar.gz && \
  55. mv EasyScheduler-${version} easyscheduler_source && \
  56. rm -rf ./${version}.tar.gz
  57. #6,后端编译
  58. RUN cd /opt/easyscheduler_source && \
  59. mvn -U clean package assembly:assembly -Dmaven.test.skip=true
  60. #7,前端编译
  61. RUN chmod -R 777 /opt/easyscheduler_source/escheduler-ui && \
  62. cd /opt/easyscheduler_source/escheduler-ui && \
  63. rm -rf /opt/easyscheduler_source/escheduler-ui/node_modules && \
  64. npm install node-sass --unsafe-perm && \
  65. npm install && \
  66. npm run build
  67. #8,安装mysql
  68. RUN echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse" >> /etc/apt/sources.list
  69. RUN echo "mysql-server mysql-server/root_password password root" | debconf-set-selections
  70. RUN echo "mysql-server mysql-server/root_password_again password root" | debconf-set-selections
  71. RUN apt-get update && \
  72. apt-get -y install mysql-server-5.7 && \
  73. mkdir -p /var/lib/mysql && \
  74. mkdir -p /var/run/mysqld && \
  75. mkdir -p /var/log/mysql && \
  76. chown -R mysql:mysql /var/lib/mysql && \
  77. chown -R mysql:mysql /var/run/mysqld && \
  78. chown -R mysql:mysql /var/log/mysql
  79. # UTF-8 and bind-address
  80. RUN sed -i -e "$ a [client]\n\n[mysql]\n\n[mysqld]" /etc/mysql/my.cnf && \
  81. sed -i -e "s/\(\[client\]\)/\1\ndefault-character-set = utf8/g" /etc/mysql/my.cnf && \
  82. sed -i -e "s/\(\[mysql\]\)/\1\ndefault-character-set = utf8/g" /etc/mysql/my.cnf && \
  83. sed -i -e "s/\(\[mysqld\]\)/\1\ninit_connect='SET NAMES utf8'\ncharacter-set-server = utf8\ncollation-server=utf8_general_ci\nbind-address = 0.0.0.0/g" /etc/mysql/my.cnf
  84. #9,安装nginx
  85. RUN apt-get update && \
  86. apt-get install -y nginx && \
  87. rm -rf /var/lib/apt/lists/* && \
  88. echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \
  89. chown -R www-data:www-data /var/lib/nginx
  90. #10,修改escheduler配置文件
  91. #后端配置
  92. RUN mkdir -p /opt/escheduler && \
  93. tar -zxvf /opt/easyscheduler_source/target/escheduler-${tar_version}.tar.gz -C /opt/escheduler && \
  94. rm -rf /opt/escheduler/conf
  95. ADD ./conf/escheduler/conf /opt/escheduler/conf
  96. #前端nginx配置
  97. ADD ./conf/nginx/default.conf /etc/nginx/conf.d
  98. #11,开放端口
  99. EXPOSE 2181 2888 3888 3306 80 12345 8888
  100. #12,安装sudo,python,vim,ping和ssh
  101. RUN apt-get update && \
  102. apt-get -y install sudo && \
  103. apt-get -y install python && \
  104. apt-get -y install vim && \
  105. apt-get -y install iputils-ping && \
  106. apt-get -y install net-tools && \
  107. apt-get -y install openssh-server && \
  108. apt-get -y install python-pip && \
  109. pip install kazoo
  110. COPY ./startup.sh /root/startup.sh
  111. #13,修改权限和设置软连
  112. RUN chmod +x /root/startup.sh && \
  113. chmod +x /opt/escheduler/script/create_escheduler.sh && \
  114. chmod +x /opt/zookeeper/bin/zkServer.sh && \
  115. chmod +x /opt/escheduler/bin/escheduler-daemon.sh && \
  116. rm -rf /bin/sh && \
  117. ln -s /bin/bash /bin/sh && \
  118. mkdir -p /tmp/xls
  119. ENTRYPOINT ["/root/startup.sh"]