mirror of
https://github.com/jesseduffield/lazydocker.git
synced 2026-07-25 00:21:04 +00:00
Merge pull request #401 from jesseduffield/add-dev-container
This commit is contained in:
commit
83acb91d83
9 changed files with 125 additions and 51 deletions
11
.devcontainer/Dockerfile
Normal file
11
.devcontainer/Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM mcr.microsoft.com/devcontainers/go:bullseye
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
curl \
|
||||||
|
git \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN go install mvdan.cc/gofumpt@latest
|
||||||
|
ENV PATH="/root/go/bin:${PATH}"
|
||||||
|
RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.50.0
|
||||||
|
RUN golangci-lint --version
|
||||||
54
.devcontainer/devcontainer.json
Normal file
54
.devcontainer/devcontainer.json
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
{
|
||||||
|
"name": "Docker in Docker",
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "./Dockerfile",
|
||||||
|
"context": "."
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"ghcr.io/devcontainers/features/common-utils:1": {
|
||||||
|
"installZsh": "true",
|
||||||
|
"upgradePackages": "false",
|
||||||
|
"uid": "1000",
|
||||||
|
"gid": "1000",
|
||||||
|
"installOhMyZsh": "true",
|
||||||
|
"nonFreePackages": "true"
|
||||||
|
},
|
||||||
|
"ghcr.io/devcontainers/features/docker-from-docker:1": {
|
||||||
|
"version": "latest",
|
||||||
|
"enableNonRootDocker": "true",
|
||||||
|
"moby": "true"
|
||||||
|
},
|
||||||
|
"ghcr.io/devcontainers/features/git:1": {},
|
||||||
|
"ghcr.io/devcontainers/features/go:1": {}
|
||||||
|
},
|
||||||
|
// Configure tool-specific properties.
|
||||||
|
"customizations": {
|
||||||
|
// Configure properties specific to VS Code.
|
||||||
|
"vscode": {
|
||||||
|
// Set *default* container specific settings.json values on container create.
|
||||||
|
"settings": {
|
||||||
|
"go.toolsManagement.checkForUpdates": "local",
|
||||||
|
"go.useLanguageServer": true,
|
||||||
|
"go.gopath": "~/go",
|
||||||
|
"[go]": {
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.organizeImports": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"go.lintTool": "golangci-lint",
|
||||||
|
"gopls": {
|
||||||
|
"formatting.gofumpt": true,
|
||||||
|
"usePlaceholders": false // add parameter placeholders when completing a function
|
||||||
|
},
|
||||||
|
"files.eol": "\n"
|
||||||
|
},
|
||||||
|
// Add the IDs of extensions you want installed when the container is created.
|
||||||
|
"extensions": [
|
||||||
|
"golang.Go"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// TODO: make this work.
|
||||||
|
// "postStartCommand": "echo \"alias gr=\\\"go run /workspaces/lazydocker/main.go\\\"\" >> ~/.zhsrc"
|
||||||
|
}
|
||||||
|
|
@ -1,11 +1,30 @@
|
||||||
package gui
|
package gui
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/fatih/color"
|
"github.com/fatih/color"
|
||||||
"github.com/jesseduffield/gocui"
|
"github.com/jesseduffield/gocui"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// See https://github.com/xtermjs/xterm.js/issues/4238
|
||||||
|
// VSCode is soon to fix this in an upcoming update.
|
||||||
|
// Once that's done, we can scrap the HIDE_UNDERSCORES variable
|
||||||
|
var (
|
||||||
|
underscoreEnvChecked bool
|
||||||
|
hideUnderscores bool
|
||||||
|
)
|
||||||
|
|
||||||
|
func hideUnderScores() bool {
|
||||||
|
if !underscoreEnvChecked {
|
||||||
|
hideUnderscores = os.Getenv("TERM_PROGRAM") == "vscode"
|
||||||
|
underscoreEnvChecked = true
|
||||||
|
}
|
||||||
|
|
||||||
|
return hideUnderscores
|
||||||
|
}
|
||||||
|
|
||||||
type Views struct {
|
type Views struct {
|
||||||
// side panels
|
// side panels
|
||||||
Project *gocui.View
|
Project *gocui.View
|
||||||
|
|
@ -155,7 +174,12 @@ func (gui *Gui) getInformationContent() string {
|
||||||
return informationStr
|
return informationStr
|
||||||
}
|
}
|
||||||
|
|
||||||
donate := color.New(color.FgMagenta, color.Underline).Sprint(gui.Tr.Donate)
|
attrs := []color.Attribute{color.FgMagenta}
|
||||||
|
if !hideUnderScores() {
|
||||||
|
attrs = append(attrs, color.Underline)
|
||||||
|
}
|
||||||
|
|
||||||
|
donate := color.New(attrs...).Sprint(gui.Tr.Donate)
|
||||||
return donate + " " + informationStr
|
return donate + " " + informationStr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
3
test/Dockerfile
Normal file
3
test/Dockerfile
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
25
test/docker-compose.yml
Normal file
25
test/docker-compose.yml
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
version: "3.5"
|
||||||
|
services:
|
||||||
|
my-service:
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
context: .
|
||||||
|
command: /app/print-random-stuff.sh
|
||||||
|
depends_on:
|
||||||
|
- my-service2
|
||||||
|
ports:
|
||||||
|
- 123:321
|
||||||
|
|
||||||
|
my-service2:
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
context: .
|
||||||
|
command: /app/print-random-stuff.sh
|
||||||
|
ports:
|
||||||
|
- 12345:12345
|
||||||
|
|
||||||
|
my-service3:
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
context: .
|
||||||
|
command: /app/print-random-stuff.sh
|
||||||
7
test/print-random-stuff.sh
Executable file
7
test/print-random-stuff.sh
Executable file
|
|
@ -0,0 +1,7 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
echo $((1 + $RANDOM % 10))
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
@ -1,24 +0,0 @@
|
||||||
# building the binary
|
|
||||||
FROM golang:1.11 as builder
|
|
||||||
|
|
||||||
# Add Maintainer Info
|
|
||||||
LABEL maintainer="Jesse Duffield <jessedduffield@gmail.com>"
|
|
||||||
|
|
||||||
# Set the Current Working Directory inside the container
|
|
||||||
WORKDIR /src/github.com/jesseduffield/lazydocker/test/printrandom
|
|
||||||
|
|
||||||
# Copy everything from the current directory to the PWD(Present Working Directory) inside the container
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Build the package
|
|
||||||
RUN go build
|
|
||||||
|
|
||||||
# putting binary into a minimal image
|
|
||||||
FROM scratch
|
|
||||||
|
|
||||||
WORKDIR /root/
|
|
||||||
|
|
||||||
COPY --from=builder /src/github.com/jesseduffield/lazydocker/test/printrandom/printrandom .
|
|
||||||
|
|
||||||
# Run the executable
|
|
||||||
CMD ["./printrandom"]
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"math/rand"
|
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
exitOnInterrupt()
|
|
||||||
|
|
||||||
for range time.Tick(time.Second / 3) {
|
|
||||||
fmt.Println(rand.Intn(1000))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func exitOnInterrupt() {
|
|
||||||
c := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(c, os.Interrupt)
|
|
||||||
go func() {
|
|
||||||
<-c
|
|
||||||
os.Exit(0)
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
Binary file not shown.
Loading…
Add table
Reference in a new issue