From 3b244c82da94e742279b7dfdec961b571746ec71 Mon Sep 17 00:00:00 2001 From: GuangJie1 Date: Mon, 8 Jul 2024 20:33:35 +0800 Subject: [PATCH 1/2] golang: support version 1.22.5 on oe2203sp4 --- go/1.22.5/22.03-lts-sp4/Dockerfile | 30 +++++++ go/README.md | 122 +++++++++++++++++++---------- go/doc/image-info.yml | 90 +++++++++++++++++++++ go/doc/picture/logo.png | Bin 0 -> 28622 bytes go/meta.yml | 4 + 5 files changed, 204 insertions(+), 42 deletions(-) create mode 100644 go/1.22.5/22.03-lts-sp4/Dockerfile create mode 100644 go/doc/image-info.yml create mode 100644 go/doc/picture/logo.png create mode 100644 go/meta.yml diff --git a/go/1.22.5/22.03-lts-sp4/Dockerfile b/go/1.22.5/22.03-lts-sp4/Dockerfile new file mode 100644 index 00000000..8b3c68e7 --- /dev/null +++ b/go/1.22.5/22.03-lts-sp4/Dockerfile @@ -0,0 +1,30 @@ +ARG BASE=openeuler/openeuler:22.03-lts-sp4 +FROM ${BASE} + +ARG TARGETARCH +ARG LOCAL_PATH=/usr/local + +ENV GOPATH /go +ENV GOTOOLCHAIN=local +ENV GOLANG_VERSION=1.22.5 +ENV GO_ROOT=${LOCAL_PATH}/go +ENV PATH=$GOPATH/bin:$GO_ROOT/bin:$PATH + +RUN yum update && yum -y install g++ gcc glibc-devel make pkg-config findutils && yum clean all; \ + curl -fSL -o ${LOCAL_PATH}/go.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz; \ + tar -xvf ${LOCAL_PATH}/go.tar.gz -C ${LOCAL_PATH}; \ + rm -f ${LOCAL_PATH}/go.tar.gz + +RUN find ${GO_ROOT}/src -exec touch -r ${GO_ROOT}/VERSION "{}"; \ + touch ${GO_ROOT}/pkg; \ + find ${GO_ROOT}/pkg -exec touch -r ${GO_ROOT}/pkg "{}"; \ + mkdir -p ${GO_ROOT}/bin/linux_${TARGETARCH}; \ + ln -sf ${GO_ROOT}/bin/go ${GO_ROOT}/bin/linux_${TARGETARCH}/go; \ + ln -sf ${GO_ROOT}/bin/gofmt ${GO_ROOT}/bin/linux_${TARGETARCH}/gofmt + +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin"; \ + chmod -R 1777 "$GOPATH" + +WORKDIR $GOPATH + +CMD ["go", "version"] \ No newline at end of file diff --git a/go/README.md b/go/README.md index 0359002c..c2edda4d 100644 --- a/go/README.md +++ b/go/README.md @@ -1,53 +1,91 @@ -#golang - - # Quick reference -- The official golang docker image. - -- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative) - -- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community) +- The official Go docker image. -# Build reference +- Maintained by: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative). -1. Build images and push: -```shell -docker buildx build -t "openeuler/golang:$VERSION" --platform linux/amd64,linux/arm64 . --push -``` +- Where to get help: [openEuler CloudNative SIG](https://gitee.com/openeuler/cloudnative), [openEuler](https://gitee.com/openeuler/community). -We are using `buildx` in here to generate multi-arch images, see more in [Docker Buildx](https://docs.docker.com/buildx/working-with-buildx/) +# Go | openEuler -2. Run: -```shell -docker run -d openeuler/golang:1.17.3 -``` +Current Go(Golang) docker images are built on the [openEuler](https://repo.openeuler.org/). This repository is free to use and exempted from per-user rate limits. -# How to use this image -## Start a Go instance in your app -The most staightforward way to use this image is to use a Go container as both the build and runtime enviroment. -In your Dockfile, writhing something along the lines of the following will compile and run your project. -```shell -FROM openeuler/golang:1.17.3 +Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language. -WORKDIR /app - -COPY go.mod go.sum ./ -RUN go mod download && go mod verify -COPY . . -RUN go build -v -o /usr/local/bin/app ./... - -CMD ["app"] -``` -You can then build and run the Docker image: -```shell -docker build -t my-golang-app . -docker run -it --rm --name my_app my-golang-app -``` +Learn more on [Go website](https://go.dev/doc/). # Supported tags and respective Dockerfile links -- 1.17.3-22.03-lts: golang v1.17.3, openEuler 22.03 LTS - -## Operating System -Linux/Unix, ARM64 or x86-64 architecture. +The tag of each Go docker image is consist of the version of Go and the version of basic image. The details are as follows +| Tags | Currently | Architectures| +|--|--|--| +|[1.17.3-oe2203lts](https://gitee.com/openeuler/openeuler-docker-images/blob/master/go/1.17.3/22.03-lts/Dockerfile)| go 1.17.3 on openEuler 22.03-LTS | amd64, arm64 | +|[1.22.5-oe2203sp4](https://gitee.com/openeuler/openeuler-docker-images/blob/master/go/1.22.5/22.03-lts-sp4/Dockerfile)| go 1.22.5 on openEuler 22.03-LTS-SP4 | amd64, arm64 | + +# Usage + +Note: `/go` is world-writable to allow flexibility in the user which runs the container (for example, in a container started with `--user 1000:1000`, running go get `github.com/example/...` into the default `$GOPATH` will succeed). While the `777` directory would be insecure on a regular host setup, there are not typically other processes or users inside the container, so this is equivalent to `700` for Docker usage, but allowing for `--user` flexibility. + + - Start a Go instance in your app + + The most straightforward way to use this image is to use a Go container as both the build and runtime environment. In your Dockerfile, writing something along the lines of the following will compile and run your project (assuming it uses go.mod for dependency management): + + ``` + # Dockerfile + FROM openeuler/go:{Tag} + + WORKDIR /usr/src/app + COPY go.mod go.sum ./ + RUN go mod download && go mod verify + COPY . . + RUN go build -v -o /usr/local/bin/app ./... + CMD ["app"] + ``` + + You can then build and run the Docker image: + ``` + docker build -t my-golang-app . + docker run -it --rm --name my-running-app my-golang-app + ``` + + - Compile your app inside the Docker container + + There may be occasions where it is not appropriate to run your app inside a container. To compile, but not run your app inside the Docker instance, you can write something like: + ``` + docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.22 go build -v + ``` + This will add your current directory as a volume to the container, set the working directory to the volume, and run the command go build which will tell go to compile the project in the working directory and output the executable to myapp. Alternatively, if you have a Makefile, you can run the make command inside your container. + ``` + docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.22 make + ``` + + - Cross-compile your app inside the Docker container + If you need to compile your application for a platform other than linux/amd64 (such as windows/386): + ``` + docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.22 go build -v + ``` + Alternatively, you can build for multiple platforms at once: + ```bash + $ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.22 bash + $ for GOOS in darwin linux; do + > for GOARCH in 386 amd64; do + > export GOOS GOARCH + > go build -v -o myapp-$GOOS-$GOARCH + > done + > done + ``` + +- View container running logs + + ```bash + docker logs -f my-go + ``` + +- To get an interactive shell + + ```bash + docker exec -it my-go /bin/bash + ``` + +# Question and answering +If you have any questions or want to use some special features, please submit an issue or a pull request on [openeuler-docker-images](https://gitee.com/openeuler/openeuler-docker-images). \ No newline at end of file diff --git a/go/doc/image-info.yml b/go/doc/image-info.yml new file mode 100644 index 00000000..64203ec3 --- /dev/null +++ b/go/doc/image-info.yml @@ -0,0 +1,90 @@ +name: go +category: others +description: Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。 +environment: | + 本应用在Docker环境中运行,安装Docker执行如下命令 + ``` + yum install -y docker + ``` +tags: | + BiSheng JDK镜像的Tag由其版本信息和基础镜像版本信息组成,详细内容如下 + + | Tag | Currently | Architectures | + |----------|-------------|------------------| + |[1.17.3-oe2203lts](https://gitee.com/openeuler/openeuler-docker-images/blob/master/go/1.17.3/22.03-lts/Dockerfile)| go 1.17.3 on openEuler 22.03-LTS | amd64, arm64 | + |[1.22.5-oe2203sp4](https://gitee.com/openeuler/openeuler-docker-images/blob/master/go/1.22.5/22.03-lts-sp4/Dockerfile)| go 1.22.5 on openEuler 22.03-LTS-SP4 | amd64, arm64 | + + 注意,以下`{Tag}`的值按照需求,替换为上述表格中的tag内容。 + +download: | + 拉取镜像到本地 + ``` + docker pull openeuler/go:{Tag} + ``` + +usage: | + `openeuler/go`最直接的方法是作为构建和运行时环境,编写类似以下内容的Dockerfile代码编译和运行: + - 运行Go实例 + 使用`openeuler/go`容器作为构建和运行时环境,可按照以下内容编译并运行项目 + ``` + # Dockerfile + FROM golang:1.22 + + WORKDIR /usr/src/app + COPY go.mod go.sum ./ + RUN go mod download && go mod verify + COPY . . + RUN go build -v -o /usr/local/bin/app ./... + CMD ["app"] + ``` + + 构建并运行Docker容器 + ``` + docker build -t my-golang-app . + docker run -it --rm --name my-running-app my-golang-app + ``` + + - 编译Go项目 + + 在某些情况下,在容器内运行应用程序可能并不合适。要编译但不在Docker实例内运行应用程序,可采用如下方式: + ``` + docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.22 go build -v + ``` + 这会将当前目录作为卷添加到容器中,将工作目录设置为该卷,然后运行执行`go build`编译项目中的代码,输出为可执行文件myapp。如果项目中包含Makefile编译文件,可以在容器内通过make命令编译: + ``` + docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.22 make + ``` + + - 交叉编译 + + 如果需要为除去linux/amd64之外的其他平台编译应用(例如:windows/386), 可采用如下方式: + ``` + docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.22 go build -v + ``` + 或者,多平台同时构建如下: + ``` + $ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.22 bash + $ for GOOS in darwin linux; do + > for GOARCH in 386 amd64; do + > export GOOS GOARCH + > go build -v -o myapp-$GOOS-$GOARCH + > done + > done + ``` + + - 容器测试 + + 使用以下方式验证镜像内安装的Go环境: + ``` + docker run -it openeuler/go:{Tag} go --version + ``` + 例如,`{Tag}`为`1.22.5-oe2203sp4`时,返回类似如下信息则证明环境正常: + ``` + go version go1.22.5 linux/amd64 + ``` + +license: BSD 3-Clause license +similar_packages: + - N/A +dependency: + - N/A \ No newline at end of file diff --git a/go/doc/picture/logo.png b/go/doc/picture/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7931b692996253a04a7088f9a5d7513e823a08bf GIT binary patch literal 28622 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 Date: Tue, 9 Jul 2024 09:04:57 +0800 Subject: [PATCH 2/2] golang: modify env format --- go/1.22.5/22.03-lts-sp4/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go/1.22.5/22.03-lts-sp4/Dockerfile b/go/1.22.5/22.03-lts-sp4/Dockerfile index 8b3c68e7..e5d29b20 100644 --- a/go/1.22.5/22.03-lts-sp4/Dockerfile +++ b/go/1.22.5/22.03-lts-sp4/Dockerfile @@ -4,7 +4,7 @@ FROM ${BASE} ARG TARGETARCH ARG LOCAL_PATH=/usr/local -ENV GOPATH /go +ENV GOPATH=/go ENV GOTOOLCHAIN=local ENV GOLANG_VERSION=1.22.5 ENV GO_ROOT=${LOCAL_PATH}/go -- Gitee