1. create Dockerfile, go folder and main.go
cd /app
mkdir go
touch cd ./go
touch Dockerfile
touch main.go
2. write Dockerfile
FROM golang:1.12 as builder
COPY ./go ./
RUN go build -o app
ENTRYPOINT ["/go/app"]
3. write main.go(golang)
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
fmt.Println("hello world")
element := make(map[string]interface{})
element["id"] = "build1"
element["domain"] = "defaut"
var array []interface{}
array = append(array, element)
data := make(map[string]interface{})
data["resources"] = array
jsonStr, err := json.Marshal(data)
if err != nil {
fmt.Println(err)
return
}
resp,err := http.Post("http://proxy:10000/api/v1/test", "application/json", bytes.NewBuffer(jsonStr))
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
4. docker-compose.yaml file
version: "3.7"
services:
app:
image: testimage
ports:
- 8000:8000
volumes:
- /etc/:/etc/
healthcheck:
disable: true
restart: "no"
logging:
driver: syslog
options:
tag: app-logger
build:
context: .
args:
- http_proxy
- https_proxy
environment:
- https_proxy
- HTTPS_PROXY
- no_proxy
- NO_PROXY
5. use command to test first
docker-compose run curl --request POST --url http://proxy:10001/api/v1/test \
--header 'content-type: application/json' \
--data '{
"resources": [xxx]
}'
sudo su -
docker-compose run curl -v http://proxy:10001/api/v1/test
6. copy file to remote host
scp xxxxx ec2-user@10.xx.xx.xx:/tmp
sudo docker cp xxxxxx apptest:/src
sudo docker exec -it apptest sh
sudo docker restart apptest
sudo docker restart appproxytest
sudo docker image list
sudo docker run -p 0.0.0.0:8000:8000/TCP --name apptest 9xxx
sudo docker run -p 0.0.0.0:8080:8080/TCP --name appproxytest 5xxx
//restart it once it is down
docker stop 0xxx
docker image ls
sudo docker run --name apptest -d --rm -p 0.0.0.0:8000:8000/TCP artifactory.xxx.com:9992/servicexxx/repoxxx:2xx
//remove all stopped containers
docker container prune
7. query graphiql
curl 'http://localhost:8000/query' --data-binary '{"query":"query xxx....