Created
October 11, 2021 10:06
-
-
Save abdennour/c26871cc9b7e247df2d19669cc4901dc to your computer and use it in GitHub Desktop.
Dockerize VSCode codr-server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM centos:latest | |
# 初始化文件夹 | |
RUN mkdir /www /www/server /www/wwwroot /www/env /www/bak /www/server/php74 /www/server/php56 /www/wwwroot/myapp \ | |
&& yum update -y \ | |
&& yum install -y nodejs zip unzip wget zsh vim make cmake gcc gcc-c++ libxml2 libxml2-devel git \ | |
nodejs zip unzip sqlite-devel m4 autoconf nginx tree \ | |
krb5-devel openssl openssl-devel curl curl-devel libjpeg \ | |
libjpeg-devel libpng libpng-devel freetype freetype-devel \ | |
pcre pcre-devel libxslt libxslt-devel bzip2 bzip2-devel \ | |
openssh-server iputils net-tools oniguruma sudo go nss -y \ | |
&& yum upgrade \ | |
&& ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone | |
# Download the ZSH configuration | |
RUN sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" \ | |
&& git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \ | |
&& git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \ | |
&& sed -i "s/plugins=(git)/plugins=(git zsh-syntax-highlighting zsh-autosuggestions)/g" /root/.zshrc | |
# Download middleware https://github.com/cdr/code-server/ | |
RUN wget -O /www/bak/code-server.rpm https://github.com/cdr/code-server/releases/download/v3.11.1/code-server-3.11.1-amd64.rpm \ | |
&& wget -O /www/bak/php74.tar.gz https://www.php.net/distributions/php-7.4.16.tar.gz \ | |
&& wget -O /www/bak/php56.tar.xz https://secure.php.net/get/php-5.6.40.tar.xz/from/this/mirror \ | |
&& wget -O /www/bak/oniguruma.tar.gz https://github.com/kkos/oniguruma/releases/download/v6.9.7.1/onig-6.9.7.1.tar.gz \ | |
&& wget -O /www/bak/xdebug-2.5.5.tar http://pecl.php.net/get/xdebug-2.5.5.tar \ | |
&& wget -O /www/bak/xdebug-3.0.2.tar http://pecl.php.net/get/xdebug-3.0.2.tar | |
# 复制文件 | |
COPY ./Dockerfile /www/bak | |
COPY ./vscode.sh /vscode.sh | |
COPY ./favicon.png /www/bak | |
COPY ./favicon.svg /www/bak | |
COPY ./favicon.ico /www/bak | |
RUN chmod 777 /vscode.sh \ | |
# 解压文件 | |
&& tar xzvf /www/bak/php74.tar.gz -C /www/bak \ | |
&& tar xJvf /www/bak/php56.tar.xz -C /www/bak \ | |
&& tar -zxvf /www/bak/oniguruma.tar.gz -C /www/bak \ | |
&& rpm -ivh /www/bak/code-server.rpm | |
# 编译安装oniguruma | |
RUN cd /www/bak/onig-onig-6.9.7 \ | |
&& ./configure --prefix=/usr \ | |
&& make && make install | |
# 编译安装php74 | |
RUN cd /www/bak/php-7.4.16 \ | |
&& ./configure --prefix=/www/server/php74 --with-curl \ | |
--with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 \ | |
--with-mysqli --with-openssl --with-pdo-mysql --with-pdo-sqlite --with-pear \ | |
--with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash \ | |
--enable-fpm --enable-bcmath --enable-inline-optimization \ | |
--enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap \ | |
--enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml \ | |
&& make && make install \ | |
&& /www/bak/php-7.4.16/build/shtool install -c ext/phar/phar.phar /www/server/php74/bin/phar.phar \ | |
&& ln -s -f phar.phar /www/server/php74/bin/phar \ | |
&& /www/server/php74/bin/pecl install /www/bak/xdebug-3.0.2.tar | |
# PHP74 配置文件 | |
RUN cp /www/bak/php-7.4.16/php.ini-development /www/server/php74/lib/php.ini \ | |
&& echo "zend_extension=/www/server/php74/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so" >> /www/server/php74/lib/php.ini \ | |
&& echo "xdebug.mode = debug" >>/www/server/php74/lib/php.ini \ | |
&& echo "debug.remote_handler = dbgp" >>/www/server/php74/lib/php.ini \ | |
&& echo "xdebug.client_host = docker.for.mac.localhost" >>/www/server/php74/lib/php.ini \ | |
&& echo "xdebug.start_with_request = yes" >>/www/server/php74/lib/php.ini \ | |
&& echo "xdebug.client_port = 9003" >>/www/server/php74/lib/php.ini \ | |
&& echo "xdebug.idekey = \"PHPSTORM\"" >>/www/server/php74/lib/php.ini \ | |
&& ln -s /www/server/php74/bin/php /www/env/php74 \ | |
&& ln -s /www/server/php74/sbin/php-fpm /www/env/php74-fpm \ | |
&& ln -s /www/server/php74/bin/pecl /www/env/php74-pecl \ | |
&& ln -s /www/server/php74/bin/pear /www/env/php74-pear \ | |
&& cp /www/server/php74/etc/php-fpm.conf.default /www/server/php74/etc/php-fpm.conf \ | |
&& cp /www/server/php74/etc/php-fpm.d/www.conf.default /www/server/php74/etc/php-fpm.d/www.conf \ | |
&& sed -i "s/group = nobody/group = nginx/g" /www/server/php74/etc/php-fpm.d/www.conf \ | |
&& sed -i "s/user = nobody/user = nginx/g" /www/server/php74/etc/php-fpm.d/www.conf | |
# 编译安装php56 | |
RUN cd /www/bak/php-5.6.40 \ | |
&& ./configure --prefix=/www/server/php56 --with-curl \ | |
--with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 \ | |
--with-mysqli --with-pdo-mysql --with-pdo-sqlite --with-pear \ | |
--with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash \ | |
--enable-fpm --enable-bcmath --enable-inline-optimization \ | |
--enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap \ | |
--enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml \ | |
&& make && make install \ | |
&& /www/bak/php-5.6.40/build/shtool install -c ext/phar/phar.phar /www/server/php56/bin \ | |
&& ln -s -f phar.phar /www/server/php56/bin/phar \ | |
&& /www/server/php56/bin/pecl install /www/bak/xdebug-2.5.5.tar | |
# PHP56 配置文件 | |
RUN cp /www/bak/php-5.6.40/php.ini-development /www/server/php56/lib/php.ini \ | |
&& echo "zend_extension=/www/server/php56/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so" >> /www/server/php56/lib/php.ini \ | |
&& echo "xdebug.remote_enable = on" >>/www/server/php56/lib/php.ini \ | |
&& echo "xdebug.remote_host = docker.for.mac.localhost" >>/www/server/php56/lib/php.ini \ | |
&& echo "xdebug.remote_port = 9003" >>/www/server/php56/lib/php.ini \ | |
&& echo 'xdebug.idekey="PHPSTORM"' >>/www/server/php56/lib/php.ini \ | |
&& echo "xdebug.remote_autostart = 1" >>/www/server/php56/lib/php.ini \ | |
&& echo "xdebug.remote_connect_back = 1" >>/www/server/php56/lib/php.ini \ | |
&& echo "xdebug.remote_handler = \"dbgp\"" >>/www/server/php56/lib/php.ini \ | |
&& ln -s /www/server/php56/sbin/php-fpm /www/env/php56-fpm \ | |
&& ln -s /www/server/php56/bin/php /www/env/php56 \ | |
&& ln -s /www/server/php56/bin/pecl /www/env/php56-pecl \ | |
&& ln -s /www/server/php56/bin/pear /www/env/php56-pear \ | |
&& cp /www/server/php56/etc/php-fpm.conf.default /www/server/php56/etc/php-fpm.conf \ | |
&& sed -i "s/group = nobody/group = nginx/g" /www/server/php56/etc/php-fpm.conf \ | |
&& sed -i "s/user = nobody/user = nginx/g" /www/server/php56/etc/php-fpm.conf | |
# NGINX https://www.digitalocean.com/ | |
RUN echo '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' | base64 --decode | tee /www/bak/nginxconfig.io-localhost.tar.gz > /dev/null \ | |
&& tar -xzvf /www/bak/nginxconfig.io-localhost.tar.gz -C /etc/nginx \ | |
&& sed -i "s/443/31003/g" /etc/nginx/sites-available/localhost.conf \ | |
&& sed -i "s:unix\:/var/run/php/php-fpm.sock:127.0.0.1\:9000:g" /etc/nginx/sites-available/localhost.conf \ | |
&& openssl dhparam -out /etc/nginx/dhparam.pem 2048 \ | |
&& sed -i "s/ssl_stapling on/ssl_stapling off/g" /etc/nginx/nginx.conf \ | |
&& sed -i "s/ssl_stapling_verify on/ssl_stapling_verify off/g" /etc/nginx/nginx.conf \ | |
&& sed -i "s/keepalive_timeout 65/keepalive_timeout 300/g" /etc/nginx/nginx.conf.default | |
# 环境变量 | |
RUN echo "export vscode=\"/www/env\"" >> /etc/profile \ | |
&& echo "export PATH=\$PATH:\$vscode" >> /etc/profile \ | |
&& sed -i "s/#PubkeyAuthentication yes/PubkeyAuthentication yes/g" /etc/ssh/sshd_config \ | |
&& sed -i "s/PasswordAuthentication yes/PasswordAuthentication no/g" /etc/ssh/sshd_config \ | |
&& echo "AllowUsers root" >> /etc/ssh/sshd_config \ | |
&& mkdir -p /root/.config/code-server \ | |
&& echo "bind-addr: 0.0.0.0:31005" > /root/.config/code-server/config.yaml \ | |
&& echo "auth: password" >> /root/.config/code-server/config.yaml \ | |
&& echo "password: `openssl rand -base64 12`" >> /root/.config/code-server/config.yaml \ | |
&& echo "cert: false" >> /root/.config/code-server/config.yaml \ | |
&& ln -s /etc/nginx/sites-available/localhost.conf /www/server/localhost.conf \ | |
&& ln -s /etc/profile /www/server/profile \ | |
&& echo -e '<?php phpinfo(); ?>' > /www/wwwroot/myapp/index.php \ | |
&& echo "source /etc/profile" >> /root/.bashrc | |
# 证书模块 https://github.com/milkfr/certs | |
RUN git clone https://github.com/milkfr/certs.git /www/bak/ssl_cert \ | |
&& sed -i "s/zhejiang/Sichuan/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/hangzhou/ChengDu/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/Organization Name (eg, company)/vscode/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/milkfr/vscode/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/[email protected]/[email protected]/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/Email Address/[email protected]/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/Common Name (e.g. server FQDN or YOUR name)/vscode/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/vscode.github.io/vscode/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/Organizational Unit Name (eg, section)/vscode/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/Locality Name (eg, city)/ChengDu/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/State or Province Name (full name)/Sichuan/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/Country Name (2 letter code)/CN/g" /www/bak/ssl_cert/openssl.cnf \ | |
&& sed -i "s/1/KzAYsECwt6gdLCzN7xEcnoaHXb4dtp/g" /www/bak/ssl_cert/openssl-gen.sh \ | |
&& sed -i "s:-out ca.pem:-out ca.pem -subj \"/C=CN/ST=Sichuan/L=ChengDu/O=vscode/OU=vscode/CN=vscode/[email protected]\":g" /www/bak/ssl_cert/openssl-gen.sh \ | |
&& sed -i "s: ca.: \${0/openssl-gen.sh}ca.:g" /www/bak/ssl_cert/openssl-gen.sh \ | |
&& sed -i "s:openssl.cnf:\${0/openssl-gen.sh}openssl.cnf:g" /www/bak/ssl_cert/openssl-gen.sh \ | |
&& sh /www/bak/ssl_cert/openssl-gen.sh \ | |
&& sed -i "s/milkfr/vscode/g" /www/bak/ssl_cert/main.go \ | |
&& sed -i "s/vscode.github.io/127.0.0.1/g" /www/bak/ssl_cert/main.go \ | |
&& cd /www/bak/ssl_cert \ | |
&& go run main.go 127.0.0.1 \ | |
&& mv /www/bak/ssl_cert/ca.crt /www/bak/ssl_cert/vscode.crt \ | |
&& mv /www/bak/ssl_cert/ca.key /www/bak/ssl_cert/vscode.key \ | |
&& sed -i "s/false/true/g" /root/.config/code-server/config.yaml \ | |
&& mkdir -p /root/.local/share/code-server/ \ | |
&& cp /www/bak/ssl_cert/vscode.crt /root/.local/share/code-server/localhost.crt \ | |
&& cp /www/bak/ssl_cert/vscode.key /root/.local/share/code-server/localhost.key | |
# 配置code-server | |
RUN cp /www/bak/favicon.svg /usr/lib/code-server/src/browser/media/favicon-dark-support.svg \ | |
&& cp /www/bak/favicon.ico /usr/lib/code-server/src/browser/media/favicon.ico \ | |
&& cp /www/bak/favicon.svg /usr/lib/code-server/src/browser/media/favicon.svg \ | |
&& cp /www/bak/favicon.png /usr/lib/code-server/src/browser/media/pwa-icon-192.png \ | |
&& cp /www/bak/favicon.png /usr/lib/code-server/src/browser/media/pwa-icon-512.png \ | |
&& cp /www/bak/favicon.png /usr/lib/code-server/src/browser/media/pwa-icon.png \ | |
&& sed -i "s/code-server/Visual Studio Code/g" /usr/lib/code-server/src/browser/media/manifest.json \ | |
&& sed -i "s/Run editors on a remote server./Copyright (C) 2021 Microsoft. All rights reserved/g" /usr/lib/code-server/src/browser/media/manifest.json | |
ENTRYPOINT ["/vscode.sh"] | |
EXPOSE 22 5050 31000 31001 31002 31003 | |
ENV TZ='Asia/Shanghai' | |
ENV LANG 'zh_CN.UTF-8' | |
STOPSIGNAL SIGQUIT | |
CMD ["/vscode.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
echo -e "\033[1;32m start code-server succers \033[0m" | |
echo -e "\033[1;31m [help] \n\033[0m" | |
echo -e "\033[1;36m Your" "`/usr/bin/grep password /root/.config/code-server/config.yaml | grep -v "auth: password"` \033[0m" | |
echo -e "\033[1;35m php56-fpm & nginx \n\n\n\033[0m" | |
/usr/bin/code-server >> /dev/null & | |
/bin/bash |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
In case if this repo become private https://github.com/XRSec/Code-Server-Update