Переглянути джерело

docker: bug fixes and improvement

* 使用 davidcaste/alpine-tomcat:jre8tomcat8 作为基础镜像,镜像体积
  从 526M 缩减到 280M 。
* 初始数据不导入默认的测试问卷
* 设置严格的文件权限(普通文件不需要 -x 权限)
Zhang Cheng 8 роки тому
батько
коміт
d9c1911dcd
2 змінених файлів з 14 додано та 16 видалено
  1. 8 13
      Dockerfile
  2. 6 3
      docker-entry.sh

+ 8 - 13
Dockerfile

@@ -38,7 +38,9 @@ RUN cd /DWSurvey && mvn dependency:resolve
 
 # copy src/ and build, src changes constantly
 COPY ./src /DWSurvey/src
-RUN cd /DWSurvey && mvn install
+RUN cd /DWSurvey \
+	&& find /DWSurvey/src -type f -exec chmod 640 {} \; \
+	&& mvn install
 
 # ------------------------- 8< -------------------------
 
@@ -46,26 +48,19 @@ RUN cd /DWSurvey && mvn install
 # see: https://bugs.alpinelinux.org/issues/7372
 # image layers: tomcat:8.0-jre8 -> openjdk:8-jre-alpine -> alpine:3.6
 # let's switch to 8.0-jre8-alpine after alpine has fixed the bug (alpine 3.6.3 release)
-FROM tomcat:8.0-jre8
+#FROM tomcat:8.0-jre8-alpine
+FROM davidcaste/alpine-tomcat:jre8tomcat8
 
 ENV MYSQL_HOST= MYSQL_PORT=3306 MYSQL_DATABASE= MYSQL_USER= MYSQL_PASSWORD=
 ENV ADMIN_EMAIL= ADMIN_PASSWORD=
 ENV CONTEXT_ROOT=/
 
-# install xmlstarlet to edit configurations
-#RUN apk add --no-cache xmlstarlet mysql-client bash
-RUN apt-get update \
-	&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \
-		xmlstarlet \
-		mysql-client \
-	&& rm -rf /var/lib/apt/lists/* \
-	&& rm -rf /usr/local/tomcat/webapps/ \
-	&& mkdir /usr/local/tomcat/webapps/
+RUN apk add --no-cache mysql-client
 
-COPY --from=builder /DWSurvey/target/diaowen.war /target/diaowen.war
+COPY --from=builder /DWSurvey/target/diaowen.war /diaowen.war
 COPY docker-entry.sh /docker-entry.sh
 
-# TODO , specify volumes
+# TODO set volumes
 
 EXPOSE 8080
 

+ 6 - 3
docker-entry.sh

@@ -1,8 +1,8 @@
 #!/bin/bash
 set -e
 
-WAR_FILE=/target/diaowen.war
-WEBAPP_BASE=/usr/local/tomcat/webapps
+WAR_FILE=/diaowen.war
+WEBAPP_BASE=$CATALINA_HOME/webapps
 
 # determine context root path
 if [[ "x${CONTEXT_ROOT}x" == "xx" || "$CONTEXT_ROOT" == "/" ]]; then
@@ -32,6 +32,7 @@ init_run() {
     require_env MYSQL_PASSWORD
 
     echo "Unpacking war ..."
+    mkdir -p "$WEBAPP_DIR"
     unzip -q -x "$WAR_FILE" -d "$WEBAPP_DIR"
 
     echo "Configuring dwsurvey ..."
@@ -67,6 +68,8 @@ migrate() {
     sed -i "s/USE \`dwsurvey\`;/USE \`${MYSQL_DATABASE}\`;/g" $MIGRATION_FILE
     # remove default user
     sed -i '/INSERT INTO `t_user`/d' $MIGRATION_FILE
+    # remove example survey (just don't INSERT anything), meaningless for production usage
+    sed -i '/INSERT INTO/d' $MIGRATION_FILE
     # apply migration file
     echo "Applying migration ..."
     mysql -h "$MYSQL_HOST" -P "$MYSQL_PORT" -u "$MYSQL_USER" --password="$MYSQL_PASSWORD" < $MIGRATION_FILE
@@ -90,7 +93,7 @@ fi
 
 # start tomcat
 if [ -z "$@" ]; then
-    catalina.sh run
+    exec $CATALINA_HOME/bin/catalina.sh run
 else
     exec "$@"
 fi