docker間のAPIアクセス(for Mac)
フロントdockerとAPIdocker間のアクセスをする方法
例えば、nuxtとRESTAPIを使って開発をしたい場合、githubのリポジトリをフロントとAPIで分けると思います。
リポジトリ
- front-dockerリポジトリ(nuxtでフロントのみを実装)
- api-dockerリポジトリ(PHPやrubyなどバックエンド側のみを実装)
前提
api-dockerが localhost:10000/api
で起動しているとしてlocalhost:10000/api
を叩けばレスポンスが返ってくる状態とします。
api-dockerのエンドポイント
BAD
これだと、nuxt(front-docker)からapi(api-docker)に localhost:10000/api
ではアクセスできません。
localhost:10000/api
※ nuxtがdockerじゃない場合はこれでOK
GOOD
docker同士のアクセスなので、localhost
の部分を http://docker.for.mac.localhost
にする必要があります。
http://docker.for.mac.localhost/api
Proxyの設定
次にProxyの設定です。上記だけだとCORS(Cross-Origin Resource Sharing)で怒られます。
環境ごとにAPIのエンドポイントはかわるのでcross-envでenvファイルを用意しておく
$ yarn add cross-env
module.exports = {
API_HOST: 'http://docker.for.mac.localhost',
}
@nuxtjs/proxyをインストール
$ yarn add @nuxtjs/proxy
nuxt.config.tsに追記
const envSet = require(`./config/env.${environment}.ts`)
const API_HOST = envSet.API_HOST
const config: NuxtConfiguration = {
...省略
modules: [
'@nuxtjs/axios',
'@nuxtjs/proxy'
],
/*
** Axios module configuration
** See https://axios.nuxtjs.org/options
*/
axios: {
proxy: true
},
proxy: {
'/api': {
target: `${API_HOST}`,
changeOrigin: true,
pathRewrite: {
'^/api/': '/api/'
}
}
}
...省略
}
Author And Source
この問題について(docker間のAPIアクセス(for Mac)), 我々は、より多くの情報をここで見つけました https://qiita.com/amagurix/items/b8e2bafa908fccabfb55著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .