Build Go development environment with Docker
Bài đăng này đã không được cập nhật trong 5 năm
I would like to make a memo for the time studying the Go
language.
This memo is about the environment construction, but I think that I will be good enough to be able to make the development of API server in Go
language later.
Why we make in Docker
Building an environment with Docker offers many benefits.
- You can easily build an environment with any OS
- Firmly secure because host OS and development application are isolated
- Easier deployment and testing
- Less software installed on host OS
Docker
is the best.
What is Docker
in the first place?
A platform for handling container-type virtual environments.
You can create, distribute, and run something like a lightweight, fast-running virtual machine called a container.
Installing Docker
Windows and Mac can download the installer on the official page of docker hub.
Linux systems can be installed using apt-get
or yum
.
Environment construction
First, create a working directory on the terminal and move to there.
mkdir work
cd work
Make settings of Docker container
Docker can create container instances based on Docker images distributed at docker hub.
This time, instead of using the distributed Docker image as it is, I created a customized image using Dockerfile.
In addition, by using the tool called docker-compose
, I can describe the settings from container build to integration in the file base of yml
format (docker-compose.yml
) and automate it.
Create Dockerfile and docker-compose.yml
in the working directory.
Open the created file with your favorite editor and edit it.
- Dockerfile
FROM golang:latest
RUN mkdir /go/src/work
WORKDIR /go/src/work
ADD . /go/src/work
- docker-compose.yml
version: '3'
services:
app:
build: .
tty: true
volumes:
- .:/go/src/work
build
Create a container using the docker-compose
command.
Run the following command in the working directory with Dockerfile
, docker-compose
docker-compose build
Then, begin to create the Docker image composed of Docker file by docker-compose
If it completes successfully, an image file will be prepared and the Docker container can be launched.
You can check the prepared image file by the following command.
docker-compose images
Start Docker container
If we run the following command, will launch docker in the same directory
docker-compose up -d
It will be started in background by adding -d option.
You can check the container status with the following command.
docker-compose ps
Try implement
Let's write Hello, World!
With Go
and actually make it works
Create main.go
file in host work and write the following code.
- main.go
package main
import "fmt"
func main () {
fmt.Println ("Hello, World!")
}
The host's work directory is mounted on the container's work directory, so the created main.go
can be accessed from the container.
You can execute main.go
in the container environment by the following command.
docker-compose exec app go run main.go
We can actually make an Herro, World!
It is also possible to enter and execute a container shell.
docker-compose exec app /bin/bash
go run main.go
Environment construction is complete!
If you share the source directory directly on Github, anyone with Docker can also easily build the environment.
All rights reserved