mirror of
https://github.com/beego/bee.git
synced 2024-11-25 20:10:55 +00:00
Expose more than one port
This adds the ability to expose more than one port inside the Docker container.
This commit is contained in:
parent
699d76bc95
commit
4ea1715df6
24
dockerize.go
24
dockerize.go
@ -29,6 +29,9 @@ var cmdDockerize = &Command{
|
|||||||
Short: "Generates a Dockerfile for your Beego application",
|
Short: "Generates a Dockerfile for your Beego application",
|
||||||
Long: `Dockerize generates a Dockerfile for your Beego Web Application.
|
Long: `Dockerize generates a Dockerfile for your Beego Web Application.
|
||||||
The Dockerfile will compile, get the dependencies with {{"godep"|bold}}, and set the entrypoint.
|
The Dockerfile will compile, get the dependencies with {{"godep"|bold}}, and set the entrypoint.
|
||||||
|
|
||||||
|
{{"Example:"|bold}}
|
||||||
|
$ bee dockerize -expose="3000,80,25"
|
||||||
`,
|
`,
|
||||||
PreRun: func(cmd *Command, args []string) { ShowShortVersionBanner() },
|
PreRun: func(cmd *Command, args []string) { ShowShortVersionBanner() },
|
||||||
Run: dockerizeApp,
|
Run: dockerizeApp,
|
||||||
@ -56,6 +59,7 @@ RUN CGO_ENABLED=0 godep go build -ldflags '-d -w -s'
|
|||||||
EXPOSE {{.Expose}}
|
EXPOSE {{.Expose}}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
// Dockerfile holds the information about the Docker container.
|
||||||
type Dockerfile struct {
|
type Dockerfile struct {
|
||||||
BaseImage string
|
BaseImage string
|
||||||
Appdir string
|
Appdir string
|
||||||
@ -70,13 +74,15 @@ var (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
fs := flag.NewFlagSet("dockerize", flag.ContinueOnError)
|
fs := flag.NewFlagSet("dockerize", flag.ContinueOnError)
|
||||||
fs.StringVar(&baseImage, "image", "library/golang", "Sets the base image of the Docker container.")
|
fs.StringVar(&baseImage, "image", "", "Sets the base image of the Docker container.")
|
||||||
fs.StringVar(&expose, "expose", "8080", "Port to expose in the Docker container.")
|
fs.StringVar(&expose, "expose", "8080", "Port(s) to expose in the Docker container.")
|
||||||
cmdDockerize.Flag = *fs
|
cmdDockerize.Flag = *fs
|
||||||
}
|
}
|
||||||
|
|
||||||
func dockerizeApp(cmd *Command, args []string) int {
|
func dockerizeApp(cmd *Command, args []string) int {
|
||||||
cmd.Flag.Parse(args)
|
if err := cmd.Flag.Parse(args); err != nil {
|
||||||
|
logger.Fatalf("Error parsing flags: %v", err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
logger.Info("Generating Dockerfile...")
|
logger.Info("Generating Dockerfile...")
|
||||||
|
|
||||||
@ -84,9 +90,19 @@ func dockerizeApp(cmd *Command, args []string) int {
|
|||||||
dir, err := filepath.Abs(".")
|
dir, err := filepath.Abs(".")
|
||||||
MustCheck(err)
|
MustCheck(err)
|
||||||
|
|
||||||
|
if len(baseImage) == 0 {
|
||||||
|
baseImage = "library/golang:latest"
|
||||||
|
}
|
||||||
|
|
||||||
appdir := strings.Replace(dir, gopath, "", 1)
|
appdir := strings.Replace(dir, gopath, "", 1)
|
||||||
|
|
||||||
// TODO: Check if the base image exists in Docker Hub
|
// In case of multiple ports to expose inside the container,
|
||||||
|
// replace all the commas with whitespaces.
|
||||||
|
// See the verb EXPOSE in the Docker documentation.
|
||||||
|
if strings.Contains(expose, ",") {
|
||||||
|
expose = strings.Replace(expose, ",", " ", -1)
|
||||||
|
}
|
||||||
|
|
||||||
_, entrypoint := path.Split(appdir)
|
_, entrypoint := path.Split(appdir)
|
||||||
dockerfile := Dockerfile{
|
dockerfile := Dockerfile{
|
||||||
BaseImage: baseImage,
|
BaseImage: baseImage,
|
||||||
|
Loading…
Reference in New Issue
Block a user