docker + VSC 打造完美本地开发环境
2020-07-24 本文已影响0人
Rediculous
引言
windows是什么,用来办公的,不是用来开发的,(这里没有任何诋毁windows的地方,但是当你经历过windows下能编译,Linux下不能编译;windows是dll,Linux是so的时候你就会懂了)
从另一个角度说,把开发环境、测试环境、甚至线上环境的系统层面整成一致,确实是非常的方便
再者,现在更换电脑是平常的事儿,你还记得有多少软件要装吗,还记得maven怎么配置的吗,还记得pip源怎么配置的吗,习惯好的会有记录,不过这些东西每次都配置一下是不想死,是不得耗一天的时间
综上,我们的原则是windows就是用来办公的,只要装一点软件,比如office,稍微抛砖引玉一下,目前几乎完美的解决方案
安装docker
exe 一路向前
安装VSC
exe 一路向前
配置docker 镜像加速
image.png{
"registry-mirrors": [
"http://f1361db2.m.daocloud.io",
"http://ovfftd6p.mirror.aliyuncs.com",
"http://registry.docker-cn.com",
"http://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"insecure-registries": [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}
编写Dockerfile
FROM centos:7.8.2003
MAINTAINER Joey
# 修改默认时区和字符集
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
ENV LC_ALL en_US.UTF-8
RUN echo "export LANG=en_US.UTF-8" >> /etc/bashrc \
&& echo "export LANGUAGE=en_US.UTF-8" >> /etc/bashrc \
&& echo "export LC_ALL=en_US.UTF-8" >> /etc/bashrc \
&& source /etc/bashrc
# RUN rpm --import /etc/pki/rpm-gpg/RPM*
# 必要工具
RUN yum -y install which wget gcc gcc+ gcc-c++ make autoconf automake libtool
RUN mkdir /app
####################################################################################################
#
# JDK
#
####################################################################################################
RUN cd /app \
&& wget https://download.java.net/openjdk/jdk12/ri/openjdk-12+32_linux-x64_bin.tar.gz \
&& tar -zxvf openjdk-12+32_linux-x64_bin.tar.gz
ENV JAVA_HOME=/app/jdk-12
ENV PATH=$PATH:$JAVA_HOME/bin
# in case you want to ssh this container
RUN echo "export JAVA_HOME=$JAVA_HOME" >> /etc/bashrc \
&& echo "export PATH=$PATH:$JAVA_HOME/bin" >> /etc/bashrc \
&& source /etc/bashrc
####################################################################################################
#
# MAVEN
#
####################################################################################################
RUN cd /app \
&& wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz \
&& tar -zxvf apache-maven-3.6.3-bin.tar.gz
ENV MAVEN_HOME /app/apache-maven-3.6.3
ENV PATH=$PATH:$MAVEN_HOME/bin
# in case you want to ssh this container
RUN echo "export MAVEN_HOME=$MAVEN_HOME" >> /etc/bashrc \
&& echo "export PATH=$PATH:$MAVEN_HOME/bin" >> /etc/bashrc \
&& source /etc/bashrc
####################################################################################################
#
# CMAKE
#
####################################################################################################
RUN cd /app \
&& wget https://cmake.org/files/v3.17/cmake-3.17.3.tar.gz \
&& tar -zxvf cmake-3.17.3.tar.gz \
&& cd /app/cmake-3.17.3 \
&& ./bootstrap \
&& make \
&& make install \
&& rm -rf /app/cmake-3.17.3
####################################################################################################
#
# PYTHON
#
####################################################################################################
RUN yum install -y zlib zlib-devel libffi-devel \
&& cd /app \
&& wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz \
&& cd /app/Python-3.8.2/ \
&& ./configure \
&& make \
&& make install \
&& python3 -m ensurepip --default-pip
####################################################################################################
#
# SSH
#
####################################################################################################
#安装openssh-server
RUN yum -y install openssh-server \
&& sed -i 's/#Port 22/Port 22/g' /etc/ssh/sshd_config \
&& sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config \
&& sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/g' /etc/ssh/sshd_config \
&& echo "root:root"|chpasswd
EXPOSE 22
#运行脚本,启动sshd服务
CMD /usr/sbin/sshd -D
根据个人情况裁剪,其中包含了C++、Java、Python开发环境
创建镜像
docker build centos-dev:v1 .
启动镜像
docker run -d -p 1022:22 -p 1080:8080 --name="dev" --privileged -it -e "container=docker" -v /d/docker/data:/data centos-dev:v1 /usr/sbin/init
把22端口映射出来,方便ssh;
把8080端口银蛇出来,方便调试接口
当然如果系统中有多个端口的,都映射出来即可
建议挂载一个本地文件夹,交换文件方便
由于目前的版本管理中包含了文档,所以,还是在本地安装了SVN客户端,没在docker内安装
打开VSC 安装Remote-Container
image.png image.png就可以了,VSC会自动在docker中安装必要工具
然后就是各种插件了,都装docker里
image.png抛砖引玉一些,这边可以根据需要,自己安装