1、前言

本文记录了通过docker、docker-compose部署code-server、mysql,搭建在线开发环境的过程,综合体验很爽,适合小规模开发团队使用。

安装环境:

vmware hypervision、centos 8

2、安装docker

# 获取阿里云yum镜像文件
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
# 非阿里云主机需要替换地址
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
# 重建 yun cache
yum clean all
yum makecache
# 使用yum升级系统
yum update --nobest #删除旧的docker
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine # 安装最新版的containerd.io
dnf install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/nightly/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm #安装Yum源管理工具
yum install -y yum-utils device-mapper-persistent-data lvm2 #安装阿里云的docker-ce源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache #安装docker-ce yum install docker-ce docker-ce-cli #配置docker 镜像
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://heusyzko.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

3、安装 docker-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

4、准备vs的settings.json配置文件

vi settings.json
{
// Nomal
"editor.fontSize": 18,
"workbench.iconTheme": "vscode-icons",
"vsicons.dontShowNewVersionMessage": true,
"editor.minimap.enabled": true,
"workbench.colorTheme": "Visual Studio Light",
"workbench.startupEditor": "newUntitledFile",
// 保存格式化
"files.autoSave": "onFocusChange",
"editor.formatOnPaste": true,
"editor.formatOnType": true,
// Env
"java.home": "/usr/local/jdk1.8.0_261",
"maven.executable.path": "/usr/local/apache-maven-3.6.0/bin/mvn",
"java.configuration.maven.userSettings": "/usr/local/apache-maven-3.6.0/conf/settings.xml",
"maven.terminal.customEnv": [
{
"environmentVariable": "JAVA_HOME",
"value": "/usr/local/jdk1.8.0_261"
}
],
"python.formatting.provider": "yapf",
"python.autoComplete.addBrackets": true,
"python.jediEnabled": false,
"python.linting.pylintEnabled": true,
// exclude file
"files.exclude": {
"**/.classpath": true,
"**/.project": true,
"**/.settings": true,
"**/.factorypath": true,
"**/.vscode": true,
"**/.empty": true,
},
// code-runner
"code-runner.clearPreviousOutput": true,
"code-runner.runInTerminal": false,
// 执行文件的脚本,可以使用绝对路径
"code-runner.executorMap": {
"python": "/usr/local/anaconda3/python3",
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
},
}

5、编辑Dockerfile文件

vs code的插件建议自行在官方市场下载后,放到extensions目录。

下载地址:

https://marketplace.visualstudio.com/

Java开发环境常用插件如下:

名称 说明
beautify 代码美化插件
Chinese (Simplified) Language Pack for Visual Studio Code 中文语言包
Debugger for Java 关键插件,java debug插件
GitLens git增强插件,可以很方便看到代码的提交修改记录,还至此在代码行提示代码的变更信息
Java Test Runner java测试插件
Language Support for Java(TM) by Red Hat 关键插件,支持java语言
Maven for Java 关键插件,java maven插件
Visual Studio IntelliCode 关键插件,代码自动提示插件
FROM codercom/code-server:latest
# COPY JDK和MAVEN
COPY jdk1.8.0_261 /usr/local/jdk1.8.0_261/
COPY apache-maven-3.6.3 /usr/local/apache-maven-3.6.3/
# code-server配置文件 插件
COPY extensions /root/.local/share/code-server/extensions/
COPY settings.json /root/.local/share/code-server/User/
# Env
ENV JAVA_HOME=/usr/local/jdk1.8.0_261 \
JRE_HOME=/usr/local/jdk1.8.0_261/jre \
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin \
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib \
MAVEN_HOME=/usr/local/apache-maven-3.6.3 ENV PATH=$MAVEN_HOME/bin:$PATH WORKDIR /home/coder/project
# 容器启动code-server:指定插件目录,指定中文,指定免密登录
ENTRYPOINT ["code-server","--locale","zh-cn","--host","0.0.0.0","--port","8080", "--user-data-dir", "/home/coder","--cert",""]

6、build 自定义docker image

docker build -t boshine/code-server:latest --rm=true .

7、编辑docker-compose

如果团队多人一起协同开发,建议每个人部署一个code-server容器,实现环境隔离。

配合github/gitee/gitlab等代码管理服务器使用。

version: "3"

services:
luocoder:
container_name: luocoder
image: boshine/code-server
links:
- db
depends_on:
- db
ports:
- "8080:8080"
- "8088:8088"
volumes:
- "/root/code-server:/home/"
- "/root/code-server/root:/root"
- "/root/code-server/tmp:/tmp"
environment:
PASSWORD: 12345678
restart: always
privileged: true
user: root db:
container_name: mysql
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- "/root/mysql/data:/var/lib/mysql"
- "/root/mysql/conf:/etc/mysql"
- "/root/mysql/logs:/var/log/mysql"
command: [
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_unicode_ci',
'--max_connections=3000'
]
environment:
MYSQL_ROOT_PASSWORD: 12345678
restart: always
privileged: true
user: root

8、使用docker-compose运行coder容

docker-compose up -d

docker部署code-server实现在线开发的更多相关文章

  1. docker 部署 jenkins server

    1. 拉取一个jenkins 镜像 docker pull jenkins 2. 创建与jenkins配置目录对应的,容器外的,文件目录,并修改相应的权限 mkdir /home/jenkins ch ...

  2. Docker部署Sql Server 2019实践

    1. 拉取SqlServer2019镜像 sudo docker pull mcr.microsoft.com/mssql/server:2019-latest 2. 创建容器+挂载: sudo do ...

  3. 使用 Docker 部署 Seata Server(分布式事务解决方式)

    1.获取镜像 ## 使用下面命令获取最新版本的镜像,此时我的版本是1.3.0 ## 或者可以使用docker pull seataio/seata-server:latest获取最新的镜像 docke ...

  4. 官宣!微软发布 VS Code Server!

    北京时间 2022 年 7 月 7 日,微软在 VS Code 官方博客中宣布了 Visual Studio Code Server! 远程开发的过去与未来 2019 年,微软发布了 VS Code ...

  5. 如何使用Docker部署PHP开发环境

    本文主要介绍了如何使用Docker构建PHP的开发环境,文中作者也探讨了构建基于Docker的开发环境应该使用单容器还是多容器,各有什么利弊.推荐PHP开发者阅读.希望对大家有所帮助. 环境部署一直是 ...

  6. Docker搭建VS Code Server ,设置访问密码随时随地写代码

    今天在N1盒子上安装了 VS Code Server,简单的记录一下. 安装docker Docker一键安装脚本 $ sudo wget -qO- https://get.docker.com/ | ...

  7. Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。

    系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...

  8. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  9. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...

随机推荐

  1. 使用Vscode进行Python开发环境配置

    Vscode是是一个强大的跨平台工具,我自己电脑是mac,公司电脑是win而且是内部环境,导致公司安装软件很费劲.好在vscode许多插件能直接离线安装,省去了很多麻烦. 很多人学习python,不知 ...

  2. 拓展欧几里得求 ax + by = c的通解(a >=0, b >= 0)

    #include <iostream> #include <cstdio> #include <algorithm> #include <vector> ...

  3. C# ASP 分析器错误信息: 无法识别的属性“targetFramework”。请注意属性名称区分大小写。

    在本地运行的应用,部署到服务器上出现错误.原因是web.config 中:<compilation debug="true" targetFramework="4. ...

  4. 2020-05-26:TCP四次挥手过程?

    福哥答案2020-05-26:

  5. Filebeat 收集K8S 日志,生产环境实践

    根据生产环境要求,需要采集K8Spod 日志,和开发协商之后,pod中应用会将日志输出到容器终端上,这时可以直接用filebeat 采集node节点上面的/var/log/containers/*.l ...

  6. .net Core使用sql语句实现批量修改数据状态

    上图为查出的所有满足条件的数据,要选中若干条数据将其状态设置为作废 一共选中6条数据,当点击确认后修改数据状态. 前端代码 1.安装NuGet包 [Abp.Dapper]于EFCore中, 2.创建文 ...

  7. 使用动态链接为什么还需要静态库lib文件

    在Windows上使用动态链接时,不光需要头文件 .dll文件 还需要一个.lib 文件. 不是动态链接吗?为什么还需要静态库.lib文件? 实际上,这个.lib文件并不是静态库,而是 导入库 文件, ...

  8. GUAVA-cache实现

    GUAVA  Cache Guava Cache与ConcurrentMap很相似基于分段锁及线程安全,但也不完全一样.最基本的区别是ConcurrentMap会一直保存所有添加的元素,直到显式地移除 ...

  9. 第二篇Scrum冲刺博客--Interesting-Corps

    第二篇Scrum冲刺博客 站立式会议 1.会议照片 2.队友完成情况 团队成员 昨日完成 今日计划 鲍鱼铭 主页页面和探测空间设计及布局实现 主页页面跳转社区功能及社区设计及布局实现 叶学涛 设计页面 ...

  10. 第6篇scrum冲刺(5.26)

    一.站立会议 1.照片 2.工作安排 成员 昨天已完成的工作 今天的工作安排 困难 陈芝敏   研究云开发,更新了登录模块,把用户的信息传入数据库了  学习云开发,云函数调用以及数据的前后端传递  遇 ...