Skip to content

Commit 72780c1

Browse files
committed
🐬Sync with codebase: docker compose
1 parent 50f1f39 commit 72780c1

10 files changed

Lines changed: 22 additions & 22 deletions

File tree

β€Ždocs/docs/building-a-dockerized-restful-api-application-in-go/index.htmlβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
<link rel=canonical href=https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/><link rel=stylesheet href=/assets/css/docs.min.8e9408609771a441499aa5571a4585b0ca95783b842d5c758af5eef1457b0fe0.css integrity><link rel=manifest href=/manifest.json><link rel=icon href=/favicon/favicon.ico><link rel=icon href=/favicon/favicon-16x16.png sizes=16x16 type=image/png><link rel=icon href=/favicon/favicon-32x32.png sizes=32x32 type=image/png><link rel=apple-touch-icon href=/favicon/apple-touch-icon.png sizes=180x180><script async src="https://www.googletagmanager.com/gtag/js?id=G-H3GD0XFJ42"></script><script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments)}gtag("js",new Date),gtag("config","G-H3GD0XFJ42")</script></head><body><div id=outer-wrapper><div id=aside-wrapper><aside><div><button class=btn><i>❌</i>Close</button></div><a href=https://learning-cloud-native-go.github.io/ class=site-logo>Learning Cloud Native Go</a><nav role=navigation><details open><summary>Documentation</summary><ul><li><a href=https://learning-cloud-native-go.github.io/docs/overview/>Overview</a></li></ul></details><details open><summary>Building a Dockerized RESTful API</summary><ul><li><a class=active href=https://learning-cloud-native-go.github.io/docs/building-a-dockerized-restful-api-application-in-go/>Building a Dockerized RESTful API application in Go</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Hello World server</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/database-and-migrations/>Database and migrations</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/configurations/>Configurations</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/routes-and-openapi-specification/>Routes and OpenAPI specification</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/repository/>Repository</a></li><li><a href=https://learning-cloud-native-go.github.io/docs/error-handling/>Error handling</a></li></ul></details></nav></aside></div><div id=content-wrapper><header><a href=https://learning-cloud-native-go.github.io/ class=site-logo>Learning Cloud Native Go</a></header><main><article><nav><button class=btn><i>⬅️</i> On this section</button>
33
<button class=btn>On this page <i>➑️</i></button></nav><header><h1>Building a Dockerized RESTful API application in Go</h1><p></p></header><div id=article-body><blockquote class=info><p><strong>πŸ‘¨β€πŸ«</strong> <strong>In this series&mldr;</strong></p><p>In this series, we are going to build a Dockerized Go RESTful API for a bookshelf with these steps:</p><ul><li>Create a basic server using Go&rsquo;s <code>net/http</code> package and Dockerize it.</li><li>Add the database, SQL migration files, and create the <code>migrate</code> app to run these migration files.</li><li>Implement dynamic application configurations via environment variables.</li><li>Integrate Chi, add initial API routes, and generate OpenAPI specifications.</li><li>Integrate GORM, implement repository functions with tests, and invoke repository from the handlers.</li><li>Enhance error handling and integrate Validator v10 for form validations.</li><li>Implement error logs and request logs via Zerolog.</li></ul></blockquote><h2 id=-the-codebase>πŸ“¦ The codebase</h2><p>The completed API application supports the following API endpoints.</p><table><thead><tr><th>Name</th><th>HTTP Method</th><th>Route</th></tr></thead><tbody><tr><td>Health</td><td>GET</td><td>/livez</td></tr><tr><td>List Books</td><td>GET</td><td>/v1/books</td></tr><tr><td>Create Book</td><td>POST</td><td>/v1/books</td></tr><tr><td>Read Book</td><td>GET</td><td>/v1/books/{id}</td></tr><tr><td>Update Book</td><td>PUT</td><td>/v1/books/{id}</td></tr><tr><td>Delete Book</td><td>DELETE</td><td>/v1/books/{id}</td></tr></tbody></table><p>The sourcecode of the completed project can be found in <a href=http://github.com/learning-cloud-native-go/myapp target=_blank>learning-cloud-native-go/myapp</a> GitHub repository.</p><p>OK, Let&rsquo;s get it started!</p></div><footer><time datetime=2024-01-21><i>πŸ•’</i> Updated: 2024-01-21</time>
44
<a href=https://learning-cloud-native-go.github.io/docs/overview/><i>οΉ€</i> Previous</a>
5-
<a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#-the-codebase>πŸ“¦ The codebase</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2024<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>
5+
<a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#-the-codebase>πŸ“¦ The codebase</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2025<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>

β€Ždocs/docs/configurations/index.htmlβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,8 @@
196196
</span></span><span class=line><span class=cl>β”œβ”€β”€ go.mod
197197
</span></span><span class=line><span class=cl>β”œβ”€β”€ go.sum
198198
</span></span><span class=line><span class=cl>β”‚
199-
</span></span><span class=line><span class=cl>β”œβ”€β”€ docker-compose.yml
199+
</span></span><span class=line><span class=cl>β”œβ”€β”€ compose.yml
200200
</span></span><span class=line><span class=cl>└── Dockerfile
201-
</span></span></code></pre></div><h2 id=-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</h2><p>In the next article, we&rsquo;ll add the initial API routes to our application.</p></div><footer><time datetime=2024-01-21><i>πŸ•’</i> Updated: 2024-01-21</time>
201+
</span></span></code></pre></div><h2 id=-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</h2><p>In the next article, we&rsquo;ll add the initial API routes to our application.</p></div><footer><time datetime=2025-06-29><i>πŸ•’</i> Updated: 2025-06-29</time>
202202
<a href=https://learning-cloud-native-go.github.io/docs/database-and-migrations/><i>οΉ€</i> Previous</a>
203-
<a href=https://learning-cloud-native-go.github.io/docs/routes-and-openapi-specification/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#populate-environment-variables-with-docker>Populate environment variables with Docker</a><ul><li><a href=#1-add-env>1. Add <code>.env</code></a></li><li><a href=#2-update-composeyml>2. update <code>compose.yml</code></a></li></ul></li><li><a href=#adding-configs-to-the-api>Adding configs to the API</a><ul><li><a href=#1-download-and-install-the-packages-and-dependencies>1. Download and install the packages and dependencies</a></li><li><a href=#2-add-configconfiggo>2. Add <code>config/config.go</code></a></li><li><a href=#3-update-the-cmdapimaingo-to-read-the-config-from-config>3. Update the <code>cmd/api/main.go</code> to read the config from <code>config</code></a></li><li><a href=#4-update-the-cmdmigratemaingo-to-read-the-config-from-config>4. Update the <code>cmd/migrate/main.go</code> to read the config from <code>config</code></a></li><li><a href=#5-run-go-mod-tidy>5. Run <code>go mod tidy</code></a></li></ul></li><li><a href=#running-migrations-on-the-application-startup>Running migrations on the application startup</a></li><li><a href=#-final-project-structure>πŸ“ Final project structure</a></li><li><a href=#-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2024<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>
203+
<a href=https://learning-cloud-native-go.github.io/docs/routes-and-openapi-specification/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#populate-environment-variables-with-docker>Populate environment variables with Docker</a><ul><li><a href=#1-add-env>1. Add <code>.env</code></a></li><li><a href=#2-update-composeyml>2. update <code>compose.yml</code></a></li></ul></li><li><a href=#adding-configs-to-the-api>Adding configs to the API</a><ul><li><a href=#1-download-and-install-the-packages-and-dependencies>1. Download and install the packages and dependencies</a></li><li><a href=#2-add-configconfiggo>2. Add <code>config/config.go</code></a></li><li><a href=#3-update-the-cmdapimaingo-to-read-the-config-from-config>3. Update the <code>cmd/api/main.go</code> to read the config from <code>config</code></a></li><li><a href=#4-update-the-cmdmigratemaingo-to-read-the-config-from-config>4. Update the <code>cmd/migrate/main.go</code> to read the config from <code>config</code></a></li><li><a href=#5-run-go-mod-tidy>5. Run <code>go mod tidy</code></a></li></ul></li><li><a href=#running-migrations-on-the-application-startup>Running migrations on the application startup</a></li><li><a href=#-final-project-structure>πŸ“ Final project structure</a></li><li><a href=#-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2025<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>

β€Ždocs/docs/database-and-migrations/index.htmlβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,8 +209,8 @@
209209
</span></span><span class=line><span class=cl>β”œβ”€β”€ go.mod
210210
</span></span><span class=line><span class=cl>β”œβ”€β”€ go.sum
211211
</span></span><span class=line><span class=cl>β”‚
212-
</span></span><span class=line><span class=cl>β”œβ”€β”€ docker-compose.yml
212+
</span></span><span class=line><span class=cl>β”œβ”€β”€ compose.yml
213213
</span></span><span class=line><span class=cl>└── Dockerfile
214-
</span></span></code></pre></div><h2 id=-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</h2><p>In the next article, we&rsquo;ll configure our application and run database migrations on application start.</p></div><footer><time datetime=2024-01-21><i>πŸ•’</i> Updated: 2024-01-21</time>
214+
</span></span></code></pre></div><h2 id=-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</h2><p>In the next article, we&rsquo;ll configure our application and run database migrations on application start.</p></div><footer><time datetime=2025-06-29><i>πŸ•’</i> Updated: 2025-06-29</time>
215215
<a href=https://learning-cloud-native-go.github.io/docs/hello-world-server/><i>οΉ€</i> Previous</a>
216-
<a href=https://learning-cloud-native-go.github.io/docs/configurations/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#database-design>Database Design</a></li><li><a href=#development-database>Development Database</a></li><li><a href=#migrate-app><code>migrate</code> app</a><ul><li><a href=#1-the-migrations-folder>1. The <code>migrations</code> folder</a></li><li><a href=#2-download-and-install-the-packages-and-dependencies>2. Download and install the packages and dependencies</a></li><li><a href=#3-cmdmigratemaingo>3. <code>cmd/migrate/main.go</code></a></li><li><a href=#4-run-go-mod-tidy>4. Run <code>go mod tidy</code></a></li><li><a href=#5-update-dockerfile>5. Update <code>Dockerfile</code></a></li></ul></li><li><a href=#migrate-commands><code>migrate</code> commands</a><ul><li><a href=#migrate--h><code>migrate -h</code></a></li><li><a href=#migrate-version><code>migrate version</code></a></li><li><a href=#migrate-status><code>migrate status</code></a></li><li><a href=#migrate-create><code>migrate create</code></a></li><li><a href=#migrate-fix><code>migrate fix</code></a></li><li><a href=#other-commands>Other commands</a></li></ul></li><li><a href=#sql-migrations>SQL migrations</a></li><li><a href=#running-migrations>Running migrations</a><ul><li><a href=#migrate-up><code>migrate up</code></a></li><li><a href=#migrate-down><code>migrate down</code></a></li></ul></li><li><a href=#-final-project-structure>πŸ“ Final project structure</a></li><li><a href=#-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2024<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>
216+
<a href=https://learning-cloud-native-go.github.io/docs/configurations/>Next <i>οΉ₯</i></a></footer></article><aside><div><button class=btn><i>❌</i>Close</button></div><strong>On this page</strong><nav id=TableOfContents><ul><li><a href=#database-design>Database Design</a></li><li><a href=#development-database>Development Database</a></li><li><a href=#migrate-app><code>migrate</code> app</a><ul><li><a href=#1-the-migrations-folder>1. The <code>migrations</code> folder</a></li><li><a href=#2-download-and-install-the-packages-and-dependencies>2. Download and install the packages and dependencies</a></li><li><a href=#3-cmdmigratemaingo>3. <code>cmd/migrate/main.go</code></a></li><li><a href=#4-run-go-mod-tidy>4. Run <code>go mod tidy</code></a></li><li><a href=#5-update-dockerfile>5. Update <code>Dockerfile</code></a></li></ul></li><li><a href=#migrate-commands><code>migrate</code> commands</a><ul><li><a href=#migrate--h><code>migrate -h</code></a></li><li><a href=#migrate-version><code>migrate version</code></a></li><li><a href=#migrate-status><code>migrate status</code></a></li><li><a href=#migrate-create><code>migrate create</code></a></li><li><a href=#migrate-fix><code>migrate fix</code></a></li><li><a href=#other-commands>Other commands</a></li></ul></li><li><a href=#sql-migrations>SQL migrations</a></li><li><a href=#running-migrations>Running migrations</a><ul><li><a href=#migrate-up><code>migrate up</code></a></li><li><a href=#migrate-down><code>migrate down</code></a></li></ul></li><li><a href=#-final-project-structure>πŸ“ Final project structure</a></li><li><a href=#-whats-next>πŸ‘¨β€πŸ« What&rsquo;s next…</a></li></ul></nav></aside></main><footer><div><i>πŸ§‘β€πŸ’»</i>Built by and copyright<a href=https://github.com/dumindu target=_blank>Dumindu Madunuwan</a><i>πŸ“…</i> 2019-2025<i>πŸš€</i> <a href=https://github.com/learning-cloud-native-go target=_blank>GitHub</a></div><div><button class=btn><i>β˜€οΈ</i><i>⁄</i><i>πŸŒ‘</i></button></div></footer></div></div><div id=body-model-outer></div><script type=text/javascript src=/assets/js/docs.min.12ffdc25c0149ef34e761ee54587f2aae17affcb8375298ad2180851930cb142.js integrity></script></body></html>

0 commit comments

Comments
Β (0)