LoginSignup
2
2

More than 3 years have passed since last update.

docker-composeでserverless-golang

Last updated at Posted at 2019-08-14

概要

serverless frameworkをgolangで使って見ようと思いました。一旦、サンプルのdeployまで。

環境構築&deploy

docker-compose.yml

version: '3'                                                                                                                                                  
services:
  sls:
    build: .
    volumes:
      - ./:/app
    working_dir: /app
  builder:  # 面倒だったので、ビルドは別サービス
    build:
      context: .
      dockerfile: Dockerfile.builder
    volumes:
      - ./:/go/src/app
    working_dir: /go/src/app                                                        

Dockerfile

FROM node
# この間にDockerのインストール(https://docs.docker.com/install/linux/docker-ce/debian/)
RUN npm install serverless -g

Dockerfile.builder

FROM golang                                                                                                                                                   
RUN apt-get update && apt-get install go-dep
$ docker-compose build
# プロジェクト作成。2つ関数が元から入ってます(hello,world)
$ docker-compose run --rm sls sls create -t aws-go-dep
# ビルド。プロジェクト作成時にMakefileが作られているのでそれを使います。
$ docker-compose run --rm builder make build
# デプロイ
$ docker-compose run --rm sls sls deploy

ローカル実行

これが実は厄介で、golangを使った場合docker経由での実行しかサポートしていないっぽいのです(参考)。。。

docker-compose.ymlに変更を加えると実行はできました。

version: '3'                                                                                                                                                  
services:
  sls:
    build: .
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock # hostのdockerを使う。
      - ./:/path/to/host/directory # hostのdockerを使うので、pathを合わせておかないとvolumeのマウントでおかしなことになる。
    working_dir: /app
  builder:
    build:
      context: .
      dockerfile: Dockerfile.builder
    volumes:
      - ./:/go/src/app
    working_dir: /go/src/app

/path/to/host/directoryの部分が環境ごとに変わってしまうのが辛い。。。
何かいい方法ないんでしょうかね。。

2
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2