Today I Learn - 45
Golang with Docker Image
sudo apt install golang
高さバーを設定します.mkdir go-hello && cd go-hello
ディレクトリを作成し、goファイルを生成し、viでコードを記述してHello Goを表示します.hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello Go!")
}
go run hello.go
エンコードされたファイル表示を実行します.go build -o hello hello.go
エンコードされたファイルを生成します.Dockerfile
FROM scratch
COPY hello /hello
CMD ["/hello"]
docker build -t gohello .
docker run gohello
DOKERファイルを作成し、高符号化ファイルを実行する画像を生成します.Multi Stage Docker Build
FROM golang
ADD main.go /root
WORKDIR /root
RUN go build -o /root/mainAPP /root/main.go
#FROM alpine:latest
FROM scratch
WORKDIR /root
COPY --from=0 /root/mainApp .
CMD ["./mainApp"]
FROM gcc
WORKDIR /usr/local/src
ADD hello.c .
RUN gcc hello.c --static -o hello
FROM scratch
COPY --from=0 /usr/local/src/hello /hello
CMD ["./hello"]
FROM golang as gobuilder
WORKDIR /go/src
ADD hello.go .
RUN go build -o hello hello.go
FROM scratch
COPY --from=gobuilder /go/src/hello /hello
CMD ["./hello"]
Go with Web
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", HelloServer)
http.ListenAndServe(":3000", nil)
}
func HelloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world\n")
}
FROM golang as gobuilder
ENV CGO_ENABLED 0
WORKDIR /go/src
ADD web.go .
RUN go build -o web web.go
FROM scratch
COPY --from=gobuilder /go/src/web /web
CMD ["./web"]
EXPOSE 3000
.dockerignore
https://docs.docker.com/engine/reference/builder/#dockerignore-file
ADDまたはCOPYの指定時に除外するファイル
mkdir logs
touch logs/web.log
touch logs/err.log
mkdir temp
touch temp/abc.txt temp/xyz.txt
touch hello.go
touch a b c
DockerfileFROM ubuntu:focal
RUN mkdir /source
WORKDIR /source
ADD . .
.dockerignoreDockerfile
logs/
temp/
*.go
docker build --no-cache -t ignore .
docker run -it ignore bash
> ls -a
Docker Client with Mac
wget https://download.docker.com/mac/static/stable/x86_64/docker-20.10.6.tgz
tar xf docker-20.10.6.tgz
sudo cp docker/docker /usr/local/bin
Docker Client and Remote Daemon with Windows
choco install docker-cli
systemctl status docker
cat /etc/systemd/system/multi-user.target.wants/docker.service
Docker Client --> Socket File --> Docker Daemon/run/containerd/containerd.sock
/var/run/docker.sock
sudo vi /etc/systemd/system/multi-user.target.wants/docker.service
13: ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
>>
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl status docker -l
Windowsで...docker -H tcp://192.168.100.10:2375 ps
setx DOCKER_HOST "tcp://192.168.100.10:2375"
docker ps
Docker Compose
Docker Compose Install
https://docs.docker.com/compose/install/#install-compose-on-linux-systems
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Docker Compose with Wordpress
mkdir wp-compose && cd wp-compose
https://hub.docker.com/_/wordpress vi docker-compose.yml
version: '3.1'
services: # docker run
wordpress:
image: wordpress
restart: always
ports: # -p
- 80:80
environment: # -e
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpadmin
WORDPRESS_DB_PASSWORD: qwer1234
WORDPRESS_DB_NAME: wp
volumes: # -v
- wordpress:/var/www/html
networks: # --network
- wp-net
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: wp
MYSQL_USER: wpadmin
MYSQL_PASSWORD: qwer1234
MYSQL_ROOT_PASSWORD: qwer1234
volumes:
- db:/var/lib/mysql
networks:
- wp-net
volumes: # docker volume create
wordpress: # docker volume create wordpress
db: # docker volume create db
networks: # docker network create
wp-net: # docker network create wp-net
docker-compose up -d
docker-compose ps
docker ps
docker volume ls
docker network ls
docker-compose down
Docker Compose with Dockerfile Image Build
mkdir ~/go-web-compose
web.gopackage main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", HelloServer)
http.ListenAndServe(":3000", nil)
}
func HelloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world\n")
}
DockerfileFROM golang as gobuilder
ENV CGO_ENABLED 0
WORKDIR /go/src
ADD web.go .
RUN go build -o web web.go
FROM scratch
COPY --from=gobuilder /go/src/web /web
CMD ["./web"]
EXPOSE 3000
docker-compose.ymlversion: '3.1'
services:
goweb:
build: .
ports:
- 80:3000
docker-compose up -d
docker-compose ps
docker ps
docker-compose down
Docker Compose Scaling
mkdir compose-scaling
cd compose-scaling
docker-compose.ymlversion: '3.1'
services:
web:
image: httpd
docker-compose up -d
docker-compose ps
docker-compose scale web=10
docker-compose ps
docker ps
docker-compose down
Reference
この問題について(Today I Learn - 45), 我々は、より多くの情報をここで見つけました https://velog.io/@leliko/Today-I-Learn-45テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol