Skip to content
This repository has been archived by the owner on Mar 23, 2021. It is now read-only.

Commit

Permalink
perf(dockerfile): 更新wps构建脚本,启动项脚本和执行脚本
Browse files Browse the repository at this point in the history
  • Loading branch information
zjZSTU committed Oct 6, 2019
1 parent 8bf790b commit 4050932
Show file tree
Hide file tree
Showing 6 changed files with 340 additions and 98 deletions.
12 changes: 7 additions & 5 deletions dockerfiles/wps/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ FROM zjzstu/ubuntu:latest
LABEL maintainer "zhujian <zjzstu@github.com>"

WORKDIR /app
COPY wps_symbol_fonts.zip docker-entrypoint.sh ./
COPY wps_symbol_fonts.zip ./

RUN set -eux && \
# 安装wps依赖,安装额外工具xdg-utils/unzip/wget/gosu
apt-get update && \
apt-get install -y libfreetype6 libcups2 libglib2.0-0 libglu1-mesa libsm6 libxrender1 libfontconfig1 libxext6 libxcb1 xdg-utils unzip wget gosu && \
apt-get install -y libfreetype6 libcups2 libglib2.0-0 libglu1-mesa libsm6 libxrender1 libfontconfig1 libxext6 libxcb1 libgtk2.0-0 libcanberra-gtk-module xdg-utils unzip wget gosu && \
# verify that the binary works
gosu nobody true && \
# 下载安装包
Expand All @@ -31,8 +31,10 @@ RUN set -eux && \
find /var/cache -type f -delete && \
find /var/log -type f -delete && \
find /usr/share/doc -type f -delete && \
find /usr/share/man -type f -delete && \
# 赋予docker-entrypoint.sh可执行权限
chmod a+x docker-entrypoint.sh
find /usr/share/man -type f -delete

COPY docker-entrypoint.sh ./
# 赋予docker-entrypoint.sh可执行权限
RUN chmod a+x docker-entrypoint.sh

ENTRYPOINT ["/app/docker-entrypoint.sh"]
21 changes: 12 additions & 9 deletions dockerfiles/wps/docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
#!/bin/bash

USER_ID=${LOCAL_USER_ID:-9001}
chown -R $USER_ID /app
if [ "$(id -u)" -eq '0' ]
then
USER_ID=${LOCAL_USER_ID:-9001}

chown -R ${USER_ID} /app
usermod -u ${USER_ID} user
usermod -a -G root user

export HOME=/home/user
exec gosu user "$0" "$@"
fi

# 修改usr用户ID
usermod -u $USER_ID user
usermod -a -G root user
export HOME=/home/user

# 切换到user用户再执行wps
exec gosu user $@
exec "$@"
105 changes: 84 additions & 21 deletions dockerfiles/wps/et.sh
Original file line number Diff line number Diff line change
@@ -1,26 +1,89 @@
#!/bin/bash

xhost + > /dev/null

START=$(docker ps -q --filter="name=et")
STOP=$(docker ps -aq --filter="name=et")

if [ -n "${START}" ]
then
docker exec -u user $START et > /dev/null
elif [ -n "${STOP}" ]
then
docker restart ${STOP} > /dev/null
else
FINALNAME=
BASENAME="/home/user/Documents"

COMMAND="et"
COMMAND_NAME="et"
IMAGE_NAME="zjzstu/wps:latest"

# 替换主机文件路径为容器路径
function parse_arg()
{
FILE_DIR=$1

if [ ! -f ${FILE_DIR} ]
then
echo "file not existed!"
exit 1
fi

if [[ ${FILE_DIR} == ./* ]]
then
FINALNAME=${PWD}${FILE_DIR#.}
elif [[ ${FILE_DIR} == ../* ]]
then
FINALNAME=`dirname ${PWD}`${FILE_DIR#..}
elif [[ ${FILE_DIR} == ${HOME}* ]]
then
FINALNAME=${FILE_DIR}
else
FINALNAME=${PWD}/${FILE_DIR}
fi

FINALNAME=${BASENAME}${FINALNAME#${HOME}}
}

# 启动wps镜像
function startup()
{
docker run -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e LOCAL_USER_ID=`id -u $USER` \
-e DISPLAY=unix${DISPLAY} \
-e LOCAL_USER_ID=`id -u ${USER}` \
-e XMODIFIERS="@im=fcitx" \
-e QT_IM_MODULE="fcitx" \
-e GTK_IM_MODULE="fcitx" \
-v $HOME/docs:/home/user/Documents \
--name et \
zjzstu/wps:latest \
et > /dev/null
fi
-e QT_IM_MODULE="fcitx" \
-e GTK_IM_MODULE="fcitx" \
-v ${HOME}:${BASENAME} \
--name ${COMMAND_NAME} \
${IMAGE_NAME} \
${COMMAND} ${FINALNAME} > /dev/null 2>&1
}

function run()
{
xhost + > /dev/null 2>&1

START=$(docker ps -q --filter="name=${COMMAND_NAME}")
STOP=$(docker ps -aq --filter="name=${COMMAND_NAME}")

if [ -n "${START}" ]
then
docker exec -u user $START ${COMMAND} $FINALNAME > /dev/null 2>&1
elif [ -n "${STOP}" ]
then
if [ -z ${FINALNAME} ]
then
docker restart ${STOP} > /dev/null 2>&1
else
docker container rm ${STOP} > /dev/null 2>&1
startup
fi
else
startup
fi
}

function main()
{
NUM=$#
if [ $NUM -eq 1 ]
then
parse_arg "$@"
fi

run "$@"
exit 0
}

main "$@"
99 changes: 78 additions & 21 deletions dockerfiles/wps/pdf.sh
Original file line number Diff line number Diff line change
@@ -1,26 +1,83 @@
#!/bin/bash

xhost + > /dev/null

START=$(docker ps -q --filter="name=wpspdf")
STOP=$(docker ps -aq --filter="name=wpspdf")

if [ -n "${START}" ]
then
docker exec -u user $START wpspdf > /dev/null
elif [ -n "${STOP}" ]
then
docker restart ${STOP} > /dev/null
else
FINALNAME=
BASENAME="/home/user/Documents"

COMMAND="wpspdf"
COMMAND_NAME="pdf"
IMAGE_NAME="zjzstu/wps:latest"

# 替换主机文件路径为容器路径
function parse_arg()
{
FILE_DIR=$1

if [[ ${FILE_DIR} == ./* ]]
then
FINALNAME=${PWD}${FILE_DIR#.}
elif [[ ${FILE_DIR} == ../* ]]
then
FINALNAME=`dirname ${PWD}`${FILE_DIR#..}
elif [[ ${FILE_DIR} == ${HOME}* ]]
then
FINALNAME=${FILE_DIR}
else
FINALNAME=${PWD}/${FILE_DIR}
fi

FINALNAME=${BASENAME}${FINALNAME#${HOME}}
}

# 启动wps镜像
function startup()
{
docker run -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e LOCAL_USER_ID=`id -u $USER` \
-e DISPLAY=unix${DISPLAY} \
-e LOCAL_USER_ID=`id -u ${USER}` \
-e XMODIFIERS="@im=fcitx" \
-e QT_IM_MODULE="fcitx" \
-e GTK_IM_MODULE="fcitx" \
-v $HOME/docs:/home/user/Documents \
--name wpspdf \
zjzstu/wps:latest \
wpspdf > /dev/null
fi
-e QT_IM_MODULE="fcitx" \
-e GTK_IM_MODULE="fcitx" \
-v ${HOME}:${BASENAME} \
--name ${COMMAND_NAME} \
${IMAGE_NAME} \
${COMMAND} ${FINALNAME} > /dev/null 2>&1
}

function run()
{
xhost + > /dev/null 2>&1

START=$(docker ps -q --filter="name=${COMMAND_NAME}")
STOP=$(docker ps -aq --filter="name=${COMMAND_NAME}")

if [ -n "${START}" ]
then
docker exec -u user $START ${COMMAND} $FINALNAME > /dev/null 2>&1
elif [ -n "${STOP}" ]
then
if [ -z ${FINALNAME} ]
then
docker restart ${STOP} > /dev/null 2>&1
else
docker container rm ${STOP} > /dev/null 2>&1
startup
fi
else
startup
fi
}

function main()
{
NUM=$#
if [ $NUM -eq 1 ]
then
parse_arg "$@"
fi

run "$@"
exit 0
}

main "$@"
102 changes: 81 additions & 21 deletions dockerfiles/wps/wpp.sh
Original file line number Diff line number Diff line change
@@ -1,26 +1,86 @@
#!/bin/bash

xhost + > /dev/null

START=$(docker ps -q --filter="name=wpp")
STOP=$(docker ps -aq --filter="name=wpp")

if [ -n "${START}" ]
then
docker exec -u user $START wpp > /dev/null
elif [ -n "${STOP}" ]
then
docker restart ${STOP} > /dev/null
else
echo $@

FINALNAME=
BASENAME="/home/user/Documents"

COMMAND="wpp"
COMMAND_NAME="wpp"
IMAGE_NAME="zjzstu/wps:latest"

# 替换主机文件路径为容器路径
function parse_arg()
{
FILE_DIR="$1"

if [[ ${FILE_DIR} == ./* ]]
then
FINALNAME=${PWD}${FILE_DIR#.}
elif [[ ${FILE_DIR} == ../* ]]
then
FINALNAME=`dirname ${PWD}`${FILE_DIR#..}
elif [[ ${FILE_DIR} == ${HOME}* ]]
then
FINALNAME=${FILE_DIR}
else
FINALNAME=${PWD}/${FILE_DIR}
fi

FINALNAME=${BASENAME}${FINALNAME#${HOME}}
}

# 启动wps镜像
function startup()
{
docker run -d \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
-e LOCAL_USER_ID=`id -u $USER` \
-e DISPLAY=unix${DISPLAY} \
-e LOCAL_USER_ID=`id -u ${USER}` \
-e XMODIFIERS="@im=fcitx" \
-e QT_IM_MODULE="fcitx" \
-e GTK_IM_MODULE="fcitx" \
-v $HOME/docs:/home/user/Documents \
--name wpp \
zjzstu/wps:latest \
wpp > /dev/null
fi
-e QT_IM_MODULE="fcitx" \
-e GTK_IM_MODULE="fcitx" \
-v ${HOME}:${BASENAME} \
--name ${COMMAND_NAME} \
${IMAGE_NAME} \
${COMMAND} ${FINALNAME} > /dev/null 2>&1
}

function run()
{
xhost + > /dev/null 2>&1

START=$(docker ps -q --filter="name=${COMMAND_NAME}")
STOP=$(docker ps -aq --filter="name=${COMMAND_NAME}")

if [ -n "${START}" ]
then
docker exec -u user $START ${COMMAND} $FINALNAME > /dev/null 2>&1
elif [ -n "${STOP}" ]
then
if [ -z ${FINALNAME} ]
then
docker restart ${STOP} > /dev/null 2>&1
else
docker container rm ${STOP} > /dev/null 2>&1
startup
fi
else
startup
fi
}

function main()
{
NUM=$#
if [ $NUM -eq 1 ]
then
parse_arg "$@"
fi

echo `$FINALNAME`
run "$@"
exit 0
}

main "$@"

0 comments on commit 4050932

Please sign in to comment.