質問編集履歴

5

修正

2019/08/24 12:04

投稿

jpskgc
jpskgc

スコア19

test CHANGED
File without changes
test CHANGED
@@ -14,31 +14,11 @@
14
14
 
15
15
  ### 発生している問題・エラーメッセージ
16
16
 
17
- `go run main.go`を叩いた際のエラー
18
-
19
- ```
20
-
21
- $ go run main.go
22
-
23
- go: finding github.com/jpskgc/article/api/controller latest
24
-
25
- go: finding github.com/jpskgc/article/api latest
26
-
27
- go: finding github.com/jpskgc/article latest
28
-
29
- build command-line-arguments: cannot load github.com/jpskgc/article/api/controller: cannot find module providing package github.com/jpskgc/article/api/controller
30
-
31
- ```
32
-
33
17
  `docker-compose up`を叩いた際のエラー
34
18
 
35
19
  ```
36
20
 
37
- api_1 | main.go:14:2: cannot find package "github.com/jpskgc/article/api/controller" in any of:
38
-
39
- api_1 | /usr/local/go/src/github.com/jpskgc/article/api/controller (from $GOROOT)
21
+ api_1 | build command-line-arguments: cannot load github.com/jpskgc/article/api/controller: cannot find module providing package github.com/jpskgc/article/api/controller
40
-
41
- api_1 | /go/src/github.com/jpskgc/article/api/controller (from $GOPATH)
42
22
 
43
23
  article_api_1 exited with code 1
44
24
 
@@ -188,122 +168,26 @@
188
168
 
189
169
  func main() {
190
170
 
171
+
172
+
173
+ api := router.Group("/api")
174
+
175
+ {
176
+
177
+ api.GET("/articles", func(c *gin.Context) {
178
+
179
+ controller.GetArticleController(c, db)
180
+
181
+ })
182
+
183
+ api.POST("/post/image", func(c *gin.Context) {
184
+
191
- err := godotenv.Load()
185
+ controller.PostImageController(c)
192
-
186
+
193
- if err != nil {
187
+ })
194
188
 
195
189
  }
196
190
 
197
- db, err := sql.Open("mysql", os.Getenv("MYSQL_USER")+":"+os.Getenv("MYSQL_PASSWORD")+"@tcp("+os.Getenv("MYSQL_HOST")+":3306)/article")
198
-
199
- if err != nil {
200
-
201
- panic(err.Error())
202
-
203
- }
204
-
205
-
206
-
207
- defer db.Close()
208
-
209
-
210
-
211
- err = db.Ping()
212
-
213
- if err != nil {
214
-
215
- panic(err.Error())
216
-
217
- }
218
-
219
-
220
-
221
- _, err = db.Exec("CREATE DATABASE IF NOT EXISTS article;")
222
-
223
- if err != nil {
224
-
225
- panic(err)
226
-
227
- }
228
-
229
-
230
-
231
- _, err = db.Exec("use article;")
232
-
233
- if err != nil {
234
-
235
- panic(err)
236
-
237
- }
238
-
239
-
240
-
241
- _, err = db.Exec("CREATE TABLE IF NOT EXISTS `articles` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,uuid varchar(36), `title` VARCHAR(100) NOT NULL,`content` TEXT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
242
-
243
- if err != nil {
244
-
245
- panic(err)
246
-
247
- }
248
-
249
-
250
-
251
- _, err = db.Exec("create table IF NOT EXISTS images (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, article_uuid varchar(36), image_name varchar(50)); ")
252
-
253
- if err != nil {
254
-
255
- panic(err)
256
-
257
- }
258
-
259
-
260
-
261
- router := gin.Default()
262
-
263
-
264
-
265
- router.Use(cors.New(cors.Config{
266
-
267
- AllowOrigins: []string{"*"},
268
-
269
- AllowMethods: []string{"GET", "POST", "OPTIONS"},
270
-
271
- AllowHeaders: []string{"Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "accept", "origin", "Cache-Control", "X-Requested-With"},
272
-
273
- ExposeHeaders: []string{"Content-Length"},
274
-
275
- AllowCredentials: true,
276
-
277
- AllowOriginFunc: func(origin string) bool {
278
-
279
- return true
280
-
281
- },
282
-
283
- MaxAge: 15 * time.Second,
284
-
285
- }))
286
-
287
-
288
-
289
- api := router.Group("/api")
290
-
291
- {
292
-
293
- api.GET("/articles", func(c *gin.Context) {
294
-
295
- controller.GetArticleController(c, db)
296
-
297
- })
298
-
299
- api.POST("/post/image", func(c *gin.Context) {
300
-
301
- controller.PostImageController(c)
302
-
303
- })
304
-
305
- }
306
-
307
191
 
308
192
 
309
193
  router.Run(":2345")

4

変更

2019/08/24 12:04

投稿

jpskgc
jpskgc

スコア19

test CHANGED
File without changes
test CHANGED
@@ -86,25 +86,21 @@
86
86
 
87
87
  FROM golang:latest
88
88
 
89
- WORKDIR '/app'
89
+ ENV GO111MODULE=on
90
-
91
- RUN go get github.com/gin-contrib/cors
90
+
92
-
93
- RUN go get github.com/gin-gonic/gin
94
-
95
- RUN go get github.com/go-sql-driver/mysql
96
-
97
- RUN go get github.com/google/uuid
98
-
99
- RUN go get github.com/aws/aws-sdk-go/aws
91
+ WORKDIR /go/src/github.com/jpskgc/article/app
100
-
101
- RUN go get github.com/aws/aws-sdk-go/service/s3
102
-
103
- RUN go get github.com/joho/godotenv
104
92
 
105
93
  COPY . .
106
94
 
95
+ RUN go mod download
96
+
97
+ RUN go build
98
+
107
- CMD ["go", "run", "main.go"]
99
+ RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
100
+
101
+ ENTRYPOINT ["/go/src/github.com/jpskgc/article/app/api"]
102
+
103
+
108
104
 
109
105
  ```
110
106
 
@@ -112,6 +108,10 @@
112
108
 
113
109
  ```yml
114
110
 
111
+ version: '3'
112
+
113
+ services:
114
+
115
115
  api:
116
116
 
117
117
  build:
@@ -122,7 +122,7 @@
122
122
 
123
123
  volumes:
124
124
 
125
- - ./api:/app
125
+ - ./api:/go/src/github.com/jpskgc/article/app
126
126
 
127
127
  depends_on:
128
128
 
@@ -142,6 +142,8 @@
142
142
 
143
143
  - MYSQL_HOST
144
144
 
145
+ - GO111MODULE
146
+
145
147
  ```
146
148
 
147
149
 

3

修正

2019/08/24 12:02

投稿

jpskgc
jpskgc

スコア19

test CHANGED
File without changes
test CHANGED
@@ -346,6 +346,6 @@
346
346
 
347
347
  全体のソースコードをgithubにあげさせていただきましたので、一度ご確認いただけると何より幸いです。
348
348
 
349
- https://github.com/jpskgc/article/tree/try-golang-mod
349
+ [https://github.com/jpskgc/article/tree/try-golang-mod](https://github.com/jpskgc/article/tree/try-golang-mod)
350
350
 
351
351
  (branch: __try-golang-mod__)

2

追記

2019/08/24 08:52

投稿

jpskgc
jpskgc

スコア19

test CHANGED
@@ -1 +1 @@
1
- golang moduleを用いてdockerを起動できません
1
+ [2019/08/24追記]golang moduleを用いてdockerを起動できません
test CHANGED
@@ -335,3 +335,17 @@
335
335
  ```
336
336
 
337
337
  以上、お手数ですがご教授いただけると幸いです。よろしくお願いいたします。
338
+
339
+
340
+
341
+ ### 追記(2019/08/24)
342
+
343
+ ローカル環境で`go run main.go`を叩くと正常に起動することは確認できました。
344
+
345
+ しかしdocker環境 での`docker-compose up`は相変わらず失敗します。(上記と同じエラーが出ます。)
346
+
347
+ 全体のソースコードをgithubにあげさせていただきましたので、一度ご確認いただけると何より幸いです。
348
+
349
+ https://github.com/jpskgc/article/tree/try-golang-mod
350
+
351
+ (branch: __try-golang-mod__)

1

加筆

2019/08/24 08:51

投稿

jpskgc
jpskgc

スコア19

test CHANGED
File without changes
test CHANGED
@@ -146,6 +146,174 @@
146
146
 
147
147
 
148
148
 
149
+ 【追記】
150
+
151
+ main.go
152
+
153
+ ```
154
+
155
+ package main
156
+
157
+
158
+
159
+ import (
160
+
161
+ "database/sql"
162
+
163
+ "os"
164
+
165
+ "time"
166
+
167
+
168
+
169
+ "github.com/gin-contrib/cors"
170
+
171
+ "github.com/gin-gonic/gin"
172
+
173
+ _ "github.com/go-sql-driver/mysql"
174
+
175
+
176
+
177
+ "github.com/joho/godotenv"
178
+
179
+
180
+
181
+ "github.com/jpskgc/article/api/controller"
182
+
183
+ )
184
+
185
+
186
+
187
+ func main() {
188
+
189
+ err := godotenv.Load()
190
+
191
+ if err != nil {
192
+
193
+ }
194
+
195
+ db, err := sql.Open("mysql", os.Getenv("MYSQL_USER")+":"+os.Getenv("MYSQL_PASSWORD")+"@tcp("+os.Getenv("MYSQL_HOST")+":3306)/article")
196
+
197
+ if err != nil {
198
+
199
+ panic(err.Error())
200
+
201
+ }
202
+
203
+
204
+
205
+ defer db.Close()
206
+
207
+
208
+
209
+ err = db.Ping()
210
+
211
+ if err != nil {
212
+
213
+ panic(err.Error())
214
+
215
+ }
216
+
217
+
218
+
219
+ _, err = db.Exec("CREATE DATABASE IF NOT EXISTS article;")
220
+
221
+ if err != nil {
222
+
223
+ panic(err)
224
+
225
+ }
226
+
227
+
228
+
229
+ _, err = db.Exec("use article;")
230
+
231
+ if err != nil {
232
+
233
+ panic(err)
234
+
235
+ }
236
+
237
+
238
+
239
+ _, err = db.Exec("CREATE TABLE IF NOT EXISTS `articles` (`id` int NOT NULL AUTO_INCREMENT PRIMARY KEY,uuid varchar(36), `title` VARCHAR(100) NOT NULL,`content` TEXT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
240
+
241
+ if err != nil {
242
+
243
+ panic(err)
244
+
245
+ }
246
+
247
+
248
+
249
+ _, err = db.Exec("create table IF NOT EXISTS images (id int AUTO_INCREMENT NOT NULL PRIMARY KEY, article_uuid varchar(36), image_name varchar(50)); ")
250
+
251
+ if err != nil {
252
+
253
+ panic(err)
254
+
255
+ }
256
+
257
+
258
+
259
+ router := gin.Default()
260
+
261
+
262
+
263
+ router.Use(cors.New(cors.Config{
264
+
265
+ AllowOrigins: []string{"*"},
266
+
267
+ AllowMethods: []string{"GET", "POST", "OPTIONS"},
268
+
269
+ AllowHeaders: []string{"Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token", "Authorization", "accept", "origin", "Cache-Control", "X-Requested-With"},
270
+
271
+ ExposeHeaders: []string{"Content-Length"},
272
+
273
+ AllowCredentials: true,
274
+
275
+ AllowOriginFunc: func(origin string) bool {
276
+
277
+ return true
278
+
279
+ },
280
+
281
+ MaxAge: 15 * time.Second,
282
+
283
+ }))
284
+
285
+
286
+
287
+ api := router.Group("/api")
288
+
289
+ {
290
+
291
+ api.GET("/articles", func(c *gin.Context) {
292
+
293
+ controller.GetArticleController(c, db)
294
+
295
+ })
296
+
297
+ api.POST("/post/image", func(c *gin.Context) {
298
+
299
+ controller.PostImageController(c)
300
+
301
+ })
302
+
303
+ }
304
+
305
+
306
+
307
+ router.Run(":2345")
308
+
309
+ }
310
+
311
+
312
+
313
+ ```
314
+
315
+
316
+
149
317
  ### 補足情報(FW/ツールのバージョンなど)
150
318
 
151
319
  ```