Diary

Diary

日々学んだことをアウトプットする場として初めてみました

docker-composeでGo(gin) + postgres(+pgweb)

環境構築の続き

所々ごまかしながらやっている部分もありますが、おおよそいいのではないかと思います。

フォルダ構成

.- 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