diff --git a/.drone.yml b/.drone.yml index b3728fe..d2f8e9f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -60,6 +60,6 @@ steps: - list=$(docker ps -a | grep my-dev-server* | awk '{print $1}') - test "$list" = "" && echo "none my-dev-server containers running" || docker stop $list && docker container rm $list # 过滤出dockerImages的id, 删除none镜像 - - docker run -d -p 18000:8080 -v /mnt/data/opt/dev-server/.local:/root/.local /mnt/data/opt/dev-server/.config:/root/.config -v /mnt/data/opt/dev-server/project:/app/project -v /mnt/data/opt/dev-server/.ssh:/root/.ssh -e ROOT_PASSWD=heiyu518 -e GIT_USER=mol -e GIT_EMAIL=hiiragi10073@163.com -e DOCKER_USER=mol10073 -e DOCKER_PASSWD=5opmbU2YvhTMwB -e http_proxy=http://192.168.124.12:7890 -e https_proxy=http://192.168.124.12:7890 --restart=always --name=my-dev-server git.liliyamol.cn:8081/mol/my-dev-server:latest + - docker run -d -p 18000:8080 -v /mnt/data/opt/dev-server/.local:/root/.local -v /mnt/data/opt/dev-server/.config:/root/.config -v /mnt/data/opt/dev-server/project:/home/coder/project -v /mnt/data/opt/dev-server/.ssh:/root/.ssh -e ROOT_PASSWD=heiyu518 -e GIT_USER=mol -e GIT_EMAIL=hiiragi10073@163.com -e DOCKER_USER=mol10073 -e DOCKER_PASSWD=5opmbU2YvhTMwB -e http_proxy=http://192.168.124.12:7890 -e https_proxy=http://192.168.124.12:7890 --restart=always --name=my-dev-server git.liliyamol.cn:8081/mol/my-dev-server:latest - docker rmi $(docker images | grep "none" | awk '{print $3}') - echo ==-----==部署成功==-----== diff --git a/Dockerfile b/Dockerfile index fbb3297..b6f0f44 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ FROM ubuntu EXPOSE 8080 EXPOSE 22 -WORKDIR /app +WORKDIR /home/coder COPY . . -VOLUME [ "/app/project", "/root/.ssh", "/root/.local", "/root/.config" ] +VOLUME [ "/home/coder/project", "/root/.ssh", "/root/.local", "/root/.config" ] # 运行时可以添加代理 ARG PROXY @@ -89,5 +89,5 @@ RUN echo "安装 code-server" && \ npm install --global code-server --unsafe-perm -ENTRYPOINT ["/app/docker-entry-point.sh"] +ENTRYPOINT ["/home/coder/entrypoint.sh", "--bind-addr", "0.0.0.0:8080", "."] diff --git a/docker-entry-point.sh b/docker-entry-point.sh deleted file mode 100755 index 257ad42..0000000 --- a/docker-entry-point.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -if [ -n "$ROOT_PASSWD" ]; then - echo "root:${ROOT_PASSWD}" | chpasswd - echo "密码设置完毕" >> /app/info.log -fi - -if [ -e "/root/.gitconfig" ]; then - echo "git配置文件已存在" >> /app/info.log -else - touch /root/.gitconfig - echo "git配置文件已创建" >> /app/info.log -fi - -# git使用openssh的shh程序 -git config --global core.sshCommand "/usr/bin/ssh" - -if [ -n "$GIT_USER" ] && [ -n "$GIT_EMAIL" ]; then - git config --global user.name "$GIT_USER" - git config --global user.email "$GIT_EMAIL" - echo "git 用户已设置完毕" >> /app/info.log -fi - -if [ -n "$DOCKER_USER" ] && [ -n "$DOCKER_PASSWD" ]; then - docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWD" - echo "docker 用户登录完成" >> /app/info.log -fi - -service ssh start >> /app/info.log -ssh-agent bash >> /app/info.log - -cat /app/info.log - -code-server diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..e7c5e70 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +if [ -n "$ROOT_PASSWD" ]; then + echo "root:${ROOT_PASSWD}" | chpasswd + echo "密码设置完毕" >> /app/info.log +fi + +if [ -e "/root/.gitconfig" ]; then + echo "git配置文件已存在" >> /app/info.log +else + touch /root/.gitconfig + echo "git配置文件已创建" >> /app/info.log +fi + +# git使用openssh的shh程序 +git config --global core.sshCommand "/usr/bin/ssh" + +if [ -n "$GIT_USER" ] && [ -n "$GIT_EMAIL" ]; then + git config --global user.name "$GIT_USER" + git config --global user.email "$GIT_EMAIL" + echo "git 用户已设置完毕" >> /app/info.log +fi + +if [ -n "$DOCKER_USER" ] && [ -n "$DOCKER_PASSWD" ]; then + docker login -u "$DOCKER_USER" -p "$DOCKER_PASSWD" + echo "docker 用户登录完成" >> /app/info.log +fi + +service ssh start >> /app/info.log +ssh-agent bash >> /app/info.log + +cat /app/info.log + +set -eu + +# We do this first to ensure sudo works below when renaming the user. +# Otherwise the current container UID may not exist in the passwd database. +eval "$(fixuid -q)" + +if [ "${DOCKER_USER-}" ]; then + USER="$DOCKER_USER" + if [ "$DOCKER_USER" != "$(whoami)" ]; then + echo "$DOCKER_USER ALL=(ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers.d/nopasswd > /dev/null + # Unfortunately we cannot change $HOME as we cannot move any bind mounts + # nor can we bind mount $HOME into a new home as that requires a privileged container. + sudo usermod --login "$DOCKER_USER" coder + sudo groupmod -n "$DOCKER_USER" coder + + sudo sed -i "/coder/d" /etc/sudoers.d/nopasswd + fi +fi + +# Allow users to have scripts run on container startup to prepare workspace. +# https://github.com/coder/code-server/issues/5177 +if [ -d "${ENTRYPOINTD}" ]; then + find "${ENTRYPOINTD}" -type f -executable -print -exec {} \; +fi + +exec dumb-init /usr/bin/code-server "$@"