環境構築の続き
- golang
- postgres
所々ごまかしながらやっている部分もありますが、おおよそいいのではないかと思います。
フォルダ構成
.- docker-compose.yml |- .env |- docker | |- go | |- DockerFile
docker-compose.yml
version: '3'
services:
api:
container_name: api
image: api
build: docker/go
ports:
- 8888:8888
environment:
DRIVERNAME: "postgres"
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
# for psql
PGUSER: ${PGUSER}
PGPASSWORD: ${PGPASSWORD}
PGDATABASE: ${POSTGRES_DB}
links:
- postgres
- pgweb
tty:
true
volumes:
- .:/go/src
postgres:
container_name: postgres
image: postgres:alpine
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
# for psql
PGUSER: ${PGUSER}
PGPASSWORD: ${PGPASSWORD}
PGDATABASE: ${POSTGRES_DB}
ports:
- ${PG_PORT}:${PG_PORT}
volumes:
- db_data:/var/lib/postgresql/data
pgweb:
container_name: pgweb
restart: always
image: sosedoff/pgweb
environment:
- DATABASE_URL=postgres://${PGUSER}:${POSTGRES_PASSWORD}@postgres:${PG_PORT}/${POSTGRES_DB}?sslmode=disable
depends_on:
- postgres
ports:
- "8081:8081"
expose:
- ${PGWEB_PORT}
volumes:
db_data:
.env
POSTGRES_PASSWORD=postgres POSTGRES_DB=test_db PGUSER=postgres PGPASSWORD=kokoichi PG_PORT=5432 PGWEB_PORT=8081
DockerFile
FROM golang:1.16-alpine
RUN apk update && apk add git
WORKDIR /go/src/
RUN apk update && \
apk add --no-cache git && \
go get -u github.com/gin-gonic/gin && \
go get -u github.com/lib/pq
RUN GO111MODULE=on go get github.com/volatiletech/sqlboiler/v4@latest
RUN GO111MODULE=on go get github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-psql@latest
# マイグレーション用のパッケージ
RUN apk add curl
RUN curl -L https://github.com/golang-migrate/migrate/releases/download/v4.11.0/migrate.linux-amd64.tar.gz | tar xvz
RUN mv ./migrate.linux-amd64 /usr/bin/migrate
EXPOSE 8080