Intro Docker Build Image Pre-work
這篇介紹Docker Build Image Pre-work。
準備相關檔案路徑
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 製作目標環境: Rocky Linux 8 + tomcat 10.1.x + Jdk 17.0.x 專案準備檔案目錄如下: {dockerName} tomcat bin setenv.sh conf server.xml tomcat-users.xml Dockerfile env.sh run.sh tomcat10.tar.gz jdk17.tar.gz
|
Dockerfile content
1 2 3 4 5 6 7 8 9
| FROM rockylinux:8 COPY jdk17.tar.gz tomcat10.tar.gz / ADD env.sh / run.sh / ENV JAVA_HOME=/java ENV PATH=$JAVA_HOME/bin:$PATH RUN sh /run.sh ENTRYPOINT ["sh", "-c", "source /env.sh && \"$@\"", "-s"] COPY tomcat /usr/local/tomcat CMD [ "/usr/local/tomcat/bin/catalina.sh" , "run" ]
|
env.sh content
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #!/bin/bash read total_Memory <<< $(free -h | grep Mem | awk '{print $2}' | tr -d 'Gi') read cgroup_Memory <<< $(cat /sys/fs/cgroup/memory/memory.limit_in_bytes) cgroup_Memory=$(($cgroup_Memory/1024/1024/1024)) if [ $cgroup_Memory -le $total_Memory ] then total_Memory=$cgroup_Memory fi if [ "$total_Memory" -le 64 ] then proportion=0.6 tomcat_Memory=`awk -v x=$total_Memory -v y=$proportion 'BEGIN {printf int(x*y)}'` elif [ "$total_Memory" -gt 64 ] && [ "$total_Memory" -le 128 ] then proportion=0.5 tomcat_Memory=`awk -v x=$total_Memory -v y=$proportion 'BEGIN {printf int(x*y)}'` elif [ "$total_Memory" -gt 128 ] then tomcat_Memory=64 else echo "can't get system total memory" fi if [ $tomcat_Memory -eq 0 ] then tomcat_Memory=1 fi export XMX=$tomcat_Memory export XMS=$tomcat_Memory
|
run.sh content
1 2 3 4 5 6 7 8 9 10 11 12
| #!/bin/bash mkdir ./tomcat10 && tar -zxvf tomcat10.tar.gz -C ./tomcat10 --strip-components 1 mkdir ./jdk17 && tar -zxvf jdk17.tar.gz -C ./jdk17 --strip-components 1 ln -s /jdk17 /java ln -s /tomcat10 /usr/local/tomcat rm -f /jdk17.tar.gz rm -f /tomcat10.tar.gz rm -rf /usr/local/tomcat/work rm -rf /usr/local/tomcat/webapps yum install -y fontconfig yum install -y procps-ng fc-cache --force
|