Docker를 사용하여 PostgreSQL + Go의 개발 환경을 만들려고했습니다.
10320 단어 5PostgreSQL도커
소개
Go에서 PostgreSQL에 연결하는 부분을 잘 알지 못했기 때문에, 스스로 Docker 환경 만들어 시험해 보았다.
참고
여기를 많이 참고로 했다.
Go PostgreSQL에 연결하기 - Qiita
Docker로 만드는 postgres 환경 | Crudzoo
도커
점은 networks 부분을 동일하게 하고 있는 곳.
네트워크 준비
# docker network create postgres-test-network
# docker network ls
NETWORK ID NAME DRIVER SCOPE
xxxxxxxxxxxx postgres-test-network bridge local
PostgreSQL
이런 느낌.POSTGRES_HOST_AUTH_METHOD: true
는 추천하지 않는다고 말했지만, 로컬의 시험 환경이기 때문에 무시했다.
DockerfileFROM postgres:11-alpine
ENV LANG ja_JP.utf8
docker-compose.ymlversion: '3'
services:
db:
build: .
tty: true
ports:
- 5434:5432
environment:
POSTGRES_USER: root
POSTGRES_HOST_AUTH_METHOD: trust
networks:
default:
external:
name: postgres-test-network
이것으로 시작
docker-compose up -d
5
DockerfileFROM golang:latest
RUN mkdir /go/src/work
WORKDIR /go/src/work
ADD . /go/src/work
docker-compose.ymlversion: '3'
services:
app:
build: .
tty: true
volumes:
- .:/go/src/work
networks:
default:
external:
name: postgres-test-network
이것으로 시작
docker-compose up -d
액세스 부분
Go 쪽의 컨테이너 중에서는 이것을 실행한다.
여기를 거의 거의 copipe 시켜 주었다.
Go PostgreSQL에 연결하기 - Qiita
main.gopackage main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
type EMPLOYEE struct {
ID string
NUMBER string
}
func main() {
db, err := sql.Open("postgres", "host=db port=5432 user=root sslmode=disable")
defer db.Close()
if err != nil {
fmt.Println(err)
}
if _, err := db.Exec("CREATE TABLE employee (emp_id serial PRIMARY KEY, emp_number INTEGER);"); err != nil {
fmt.Println(err)
}
// INSERT
var empID string
id := 4
number := 4445
err = db.QueryRow("INSERT INTO employee (emp_id, emp_number) VALUES($1,$2) RETURNING emp_id", id, number).Scan(&empID)
if err != nil {
fmt.Println(err)
}
fmt.Println(empID)
// SELECT
rows, err := db.Query("SELECT * FROM employee")
if err != nil {
fmt.Println(err)
}
var es []EMPLOYEE
for rows.Next() {
var e EMPLOYEE
rows.Scan(&e.ID, &e.NUMBER)
es = append(es, e)
}
fmt.Printf("%v", es)
}
lib/pq
가 들어 있지 않았기 때문에, go get
했다. 드라이버 같다.
go get github.com/lib/pq
여러가지 시험하고 있을 때, 네트워크 연결되지 않는다고 몇번인가 말해졌으므로, ping 해 확인했다.
Docker가 잘, DNS 서버 갓 compose
에 걸린 services
의 이름으로 등록 해주는 것 같다.
# ping db
PING db (172.20.0.3) 56(84) bytes of data.
64 bytes from work2_postgres_db_1.postgres-test-network (172.20.0.3): icmp_seq=1 ttl=64 time=0.258 ms
이것으로. 실행했을 때, 그것처럼 움직였다.
go run main.go
Postico에서 확인
일단 DB의 내용도 GUI 툴로 확인했다. 좋은 느낌.
Postico – a modern PostgreSQL client for the Mac
결론
로컬로에 움직이는 환경 만들 수 있었기 때문에, 여러가지 시험해 보고 싶다.
Reference
이 문제에 관하여(Docker를 사용하여 PostgreSQL + Go의 개발 환경을 만들려고했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/optimisuke/items/911cd8756bdbfeb4815a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여기를 많이 참고로 했다.
Go PostgreSQL에 연결하기 - Qiita
Docker로 만드는 postgres 환경 | Crudzoo
도커
점은 networks 부분을 동일하게 하고 있는 곳.
네트워크 준비
# docker network create postgres-test-network
# docker network ls
NETWORK ID NAME DRIVER SCOPE
xxxxxxxxxxxx postgres-test-network bridge local
PostgreSQL
이런 느낌.POSTGRES_HOST_AUTH_METHOD: true
는 추천하지 않는다고 말했지만, 로컬의 시험 환경이기 때문에 무시했다.
DockerfileFROM postgres:11-alpine
ENV LANG ja_JP.utf8
docker-compose.ymlversion: '3'
services:
db:
build: .
tty: true
ports:
- 5434:5432
environment:
POSTGRES_USER: root
POSTGRES_HOST_AUTH_METHOD: trust
networks:
default:
external:
name: postgres-test-network
이것으로 시작
docker-compose up -d
5
DockerfileFROM golang:latest
RUN mkdir /go/src/work
WORKDIR /go/src/work
ADD . /go/src/work
docker-compose.ymlversion: '3'
services:
app:
build: .
tty: true
volumes:
- .:/go/src/work
networks:
default:
external:
name: postgres-test-network
이것으로 시작
docker-compose up -d
액세스 부분
Go 쪽의 컨테이너 중에서는 이것을 실행한다.
여기를 거의 거의 copipe 시켜 주었다.
Go PostgreSQL에 연결하기 - Qiita
main.gopackage main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
type EMPLOYEE struct {
ID string
NUMBER string
}
func main() {
db, err := sql.Open("postgres", "host=db port=5432 user=root sslmode=disable")
defer db.Close()
if err != nil {
fmt.Println(err)
}
if _, err := db.Exec("CREATE TABLE employee (emp_id serial PRIMARY KEY, emp_number INTEGER);"); err != nil {
fmt.Println(err)
}
// INSERT
var empID string
id := 4
number := 4445
err = db.QueryRow("INSERT INTO employee (emp_id, emp_number) VALUES($1,$2) RETURNING emp_id", id, number).Scan(&empID)
if err != nil {
fmt.Println(err)
}
fmt.Println(empID)
// SELECT
rows, err := db.Query("SELECT * FROM employee")
if err != nil {
fmt.Println(err)
}
var es []EMPLOYEE
for rows.Next() {
var e EMPLOYEE
rows.Scan(&e.ID, &e.NUMBER)
es = append(es, e)
}
fmt.Printf("%v", es)
}
lib/pq
가 들어 있지 않았기 때문에, go get
했다. 드라이버 같다.
go get github.com/lib/pq
여러가지 시험하고 있을 때, 네트워크 연결되지 않는다고 몇번인가 말해졌으므로, ping 해 확인했다.
Docker가 잘, DNS 서버 갓 compose
에 걸린 services
의 이름으로 등록 해주는 것 같다.
# ping db
PING db (172.20.0.3) 56(84) bytes of data.
64 bytes from work2_postgres_db_1.postgres-test-network (172.20.0.3): icmp_seq=1 ttl=64 time=0.258 ms
이것으로. 실행했을 때, 그것처럼 움직였다.
go run main.go
Postico에서 확인
일단 DB의 내용도 GUI 툴로 확인했다. 좋은 느낌.
Postico – a modern PostgreSQL client for the Mac
결론
로컬로에 움직이는 환경 만들 수 있었기 때문에, 여러가지 시험해 보고 싶다.
Reference
이 문제에 관하여(Docker를 사용하여 PostgreSQL + Go의 개발 환경을 만들려고했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/optimisuke/items/911cd8756bdbfeb4815a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# docker network create postgres-test-network
# docker network ls
NETWORK ID NAME DRIVER SCOPE
xxxxxxxxxxxx postgres-test-network bridge local
FROM postgres:11-alpine
ENV LANG ja_JP.utf8
version: '3'
services:
db:
build: .
tty: true
ports:
- 5434:5432
environment:
POSTGRES_USER: root
POSTGRES_HOST_AUTH_METHOD: trust
networks:
default:
external:
name: postgres-test-network
docker-compose up -d
FROM golang:latest
RUN mkdir /go/src/work
WORKDIR /go/src/work
ADD . /go/src/work
version: '3'
services:
app:
build: .
tty: true
volumes:
- .:/go/src/work
networks:
default:
external:
name: postgres-test-network
docker-compose up -d
Go 쪽의 컨테이너 중에서는 이것을 실행한다.
여기를 거의 거의 copipe 시켜 주었다.
Go PostgreSQL에 연결하기 - Qiita
main.go
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
type EMPLOYEE struct {
ID string
NUMBER string
}
func main() {
db, err := sql.Open("postgres", "host=db port=5432 user=root sslmode=disable")
defer db.Close()
if err != nil {
fmt.Println(err)
}
if _, err := db.Exec("CREATE TABLE employee (emp_id serial PRIMARY KEY, emp_number INTEGER);"); err != nil {
fmt.Println(err)
}
// INSERT
var empID string
id := 4
number := 4445
err = db.QueryRow("INSERT INTO employee (emp_id, emp_number) VALUES($1,$2) RETURNING emp_id", id, number).Scan(&empID)
if err != nil {
fmt.Println(err)
}
fmt.Println(empID)
// SELECT
rows, err := db.Query("SELECT * FROM employee")
if err != nil {
fmt.Println(err)
}
var es []EMPLOYEE
for rows.Next() {
var e EMPLOYEE
rows.Scan(&e.ID, &e.NUMBER)
es = append(es, e)
}
fmt.Printf("%v", es)
}
lib/pq
가 들어 있지 않았기 때문에, go get
했다. 드라이버 같다.go get github.com/lib/pq
여러가지 시험하고 있을 때, 네트워크 연결되지 않는다고 몇번인가 말해졌으므로, ping 해 확인했다.
Docker가 잘, DNS 서버 갓
compose
에 걸린 services
의 이름으로 등록 해주는 것 같다.# ping db
PING db (172.20.0.3) 56(84) bytes of data.
64 bytes from work2_postgres_db_1.postgres-test-network (172.20.0.3): icmp_seq=1 ttl=64 time=0.258 ms
이것으로. 실행했을 때, 그것처럼 움직였다.
go run main.go
Postico에서 확인
일단 DB의 내용도 GUI 툴로 확인했다. 좋은 느낌.
Postico – a modern PostgreSQL client for the Mac
결론
로컬로에 움직이는 환경 만들 수 있었기 때문에, 여러가지 시험해 보고 싶다.
Reference
이 문제에 관하여(Docker를 사용하여 PostgreSQL + Go의 개발 환경을 만들려고했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/optimisuke/items/911cd8756bdbfeb4815a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
로컬로에 움직이는 환경 만들 수 있었기 때문에, 여러가지 시험해 보고 싶다.
Reference
이 문제에 관하여(Docker를 사용하여 PostgreSQL + Go의 개발 환경을 만들려고했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/optimisuke/items/911cd8756bdbfeb4815a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)