前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造超级富容器开发环境(七):安装开发语言环境

打造超级富容器开发环境(七):安装开发语言环境

原创
作者头像
imroc
发布2024-06-12 09:45:18
810
发布2024-06-12 09:45:18
举报

脚本组织方法

日常可能用到的开发语言环境,以及部分语言包管理所需要安装的软件,每种语言都可以单独用一个脚本文件来维护:

代码语言:txt
复制
scripts
└── lang
    ├── c-cpp.sh
    ├── go.sh
    ├── java.sh
    ├── julia.sh
    ├── lua.sh
    ├── nodejs.sh
    ├── php.sh
    ├── python.sh
    ├── ruby.sh
    └── rust.sh

Dockerfile 指令

Dockerfile 中挨个将语言相关的脚本拷进去执行:

代码语言:dockerfile
复制
# 语言相关工具和软件包
#
COPY ./scripts/lang/c-cpp.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/python.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/julia.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/go.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/rust.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/ruby.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/php.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/nodejs.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/java.sh /run.sh
RUN /run.sh

COPY ./scripts/lang/lua.sh /run.sh
RUN /run.sh

脚本文件示例

C/C++

代码语言:bash title="scripts/lang/c-cpp.sh"
复制
#!/bin/bash

set -ex

apt install -y gcc g++ clang libclang-dev

Go

代码语言:bash title="scripts/lang/go.sh"
复制
#!/bin/bash

set -ex

# golang
curl -L https://git.io/vQhTU | GOROOT=/opt/go bash -s -- --version 1.22.2 # CHANGE_VERSION

export PATH="$PATH:/opt/go/bin:/root/go/bin"

CGO_ENABLED=0 go install -ldflags='-s -w -extldflags=-static' github.com/go-delve/delve/cmd/dlv@latest # 静态编译dlv,方便拷贝到容器内进行远程调试
go install github.com/bazelbuild/bazelisk@latest && mv /root/go/bin/bazelisk /root/go/bin/bazel
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
go install github.com/rakyll/hey@latest
go install fortio.org/fortio@latest
go install go.k6.io/k6@latest
go install github.com/antonmedv/fx@latest
# protobuf and grpc
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# formatting bazel BUILD and .bzl files
go install github.com/bazelbuild/buildtools/buildifier@latest
# hugo
go install -tags extended github.com/gohugoio/hugo@latest
# kustomize
go install sigs.k8s.io/kustomize/kustomize/v5@latest
# k9s
go install github.com/derailed/k9s@latest
# yaml2json
go install github.com/bronze1man/yaml2json@latest
# cfssl
go install github.com/cloudflare/cfssl/cmd/cfssl@latest
# regols
go install github.com/kitagry/regols@latest
# crd-ref-docs
go install github.com/elastic/crd-ref-docs@latest
# gocrane and crane
go install github.com/google/go-containerregistry/cmd/gcrane@latest
go install github.com/google/go-containerregistry/cmd/crane@latest
# envsubst
go install github.com/a8m/envsubst/cmd/envsubst@latest
# jb
go install github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb@latest
# go-jsonnet
go install github.com/google/go-jsonnet/cmd/jsonnet@latest
go install github.com/google/go-jsonnet/cmd/jsonnet-lint@latest

Java

代码语言:bash title="scripts/lang/java.sh"
复制
#!/bin/bash

set -ex

export DEBIAN_FRONTEND=noninteractive

# java
apt install -y openjdk-21-jdk # CHANGE_VERSION
apt install -y maven

# gradle
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install gradle 8.7 # CHANGE_VERSION

Julia

代码语言:bash title="scripts/lang/julia.sh"
复制
#!/bin/bash

set -ex

pip install jill -U --break-system-packages
jill install -c

Lua

代码语言:bash title="scripts/lang/lua.sh"
复制
#!/bin/bash

set -ex

clean_tmp() {
	cd /tmp
	rm -rf /tmp/tmp
}

gotmp() {
	mkdir -p /tmp/tmp
	cd /tmp/tmp
}

# lua https://www.lua.org/ftp/
LUA_VERSION="5.4.6"
gotmp
curl -R -O https://www.lua.org/ftp/lua-$LUA_VERSION.tar.gz
tar -zxf lua-*.tar.gz
rm -f lua-*.tar.gz
cd lua-*
make linux test
make install
clean_tmp

# luarocks http://luarocks.github.io/luarocks/releases/
LUAROCKS_VERSION="3.11.0"
gotmp
wget -O luarocks.tar.gz http://luarocks.github.io/luarocks/releases/luarocks-$LUAROCKS_VERSION.tar.gz # CHANGE_VERSION
tar -zxf luarocks.tar.gz
cd luarocks-*
./configure --with-lua-include=/usr/local/include
make
make install
clean_tmp

NodeJS

代码语言:bash title="scripts/lang/nodejs.sh"
复制
#!/bin/bash

set -ex

# nodejs https://github.com/nodesource/distributions?tab=readme-ov-file#installation-instructions
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt-get install -y nodejs

# npm install
npm install -g husky
npm install -g yarn
npm install -g @ohos/hpm-cli

# neovim 依赖
npm install -g neovim

PHP

代码语言:bash title="scripts/lang/php.sh"
复制
#!/bin/bash

set -ex

# php
apt install -y php php-fpm php-all-dev composer

Python

代码语言:bash title="scripts/lang/python.sh"
复制
#!/bin/bash

set -ex

# python
apt install -y python3-full python3-pip python-is-python3
pip install virtualenv --break-system-packages

# tccli (https://cloud.tencent.com/document/product/440/34011)
pip install --no-input tccli --break-system-packages
# kube-shell (https://github.com/cloudnativelabs/kube-shell#installation)
pip install --no-input kube-shell --break-system-packages
# hg
pip install --no-input --upgrade mercurial --break-system-packages

# repo 命令 (https://help.gitee.com/enterprise/code-manage/%E9%9B%86%E6%88%90%E4%B8%8E%E7%94%9F%E6%80%81/Repo%20%E5%B7%A5%E5%85%B7%E4%BD%BF%E7%94%A8%E4%BB%8B%E7%BB%8D)
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 >/usr/local/bin/repo
chmod a+x /usr/local/bin/repo
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests --break-system-packages

# neovim 依赖
pip install --no-input neovim --break-system-packages
# nvim 的 pastify.nvim 插件的依赖:https://github.com/TobinPalmer/pastify.nvim
pip install --no-input pillow --break-system-packages

Ruby

代码语言:bash title="scripts/lang/ruby.sh"
复制
#!/bin/bash

set -ex

# ruby
apt install -y ruby-full

# nvim 的 ruby 依赖
gem install neovim

Rust

代码语言:bash title="scripts/lang/rust.sh"
复制
#!/bin/bash

set -ex

# rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash -s -- -y

# cargo install
export PATH="$PATH:/root/.cargo/bin"

cargo install zoxide --locked
cargo install deno --locked
cargo install procs
cargo install mdbook
cargo install tealdeer
cargo install fd-find
cargo install ripgrep
cargo install skim
cargo install zellij --locked
cargo install bat --locked

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 脚本组织方法
  • Dockerfile 指令
  • 脚本文件示例
    • C/C++
      • Go
        • Java
          • Julia
            • Lua
              • NodeJS
                • PHP
                  • Python
                    • Ruby
                      • Rust
                      相关产品与服务
                      容器服务
                      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档