Как да разположите Go уеб приложение с Docker и Nginx на Ubuntu 22.04

Как да разположите Go уеб приложение с Docker и Nginx на Ubuntu 22.04

Въведение

Създаването на контейнеризирани приложения става все по-популярно поради предимствата си като изолация, преносимост и мащабируемост. Docker е водеща платформа за контейнеризация, която позволява разработчиците да опаковат своите приложения и зависимостите им в самостоятелни изпълними файлове, наречени контейнери. Nginx е лек и високоефективен уеб сървър, който може да се използва за насочване на трафик към контейнеризирани приложения.

В това ръководство ще покажем стъпка по стъпка как да разположите Go уеб приложение с Docker и Nginx на сървър с Ubuntu 22.04. Ще покрием инсталирането и конфигурирането на необходимите компоненти, създаването на Docker образ за вашето Go приложение и конфигурирането на Nginx като прокси сървър.

Изисквания

* Сървър с Ubuntu 22.04 с поне 512 MB RAM и 2 GB дисково пространство
* Root достъп до сървъра
* Текстов редактор като nano или vim

  Топ 9 сайта, внасящи революционна промяна в устройствата за проверка на здравето

Инсталиране на Docker

1. Актуализирайте списъка си с пакети:

sudo apt update

2. Инсталирайте Docker Engine:

sudo apt install docker-ce docker-ce-cli containerd.io

3. Добавете текущия си потребител към групата „docker“:

sudo usermod -aG docker $USER

4. Рестартирайте системата, за да влязат в сила промените:

sudo reboot

Инсталиране на Go

1. Изтеглете официалния пакет на Go от уебсайта на Go:

wget https://go.dev/dl/go1.19.1.linux-amd64.tar.gz

2. Разархивирайте пакета:

sudo tar -C /usr/local -xzf go1.19.1.linux-amd64.tar.gz

3. Променете собствеността на директорията на root:

sudo chown -R root:root /usr/local/go

4. Добавете пътя на Go към променливата PATH:

echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile

5. Заредете промените:

source ~/.profile

Инсталиране на Nginx

1. Инсталирайте Nginx:

sudo apt install nginx

2. Стартирайте Nginx:

sudo systemctl start nginx

Създаване на Go уеб приложение

1. Създайте директория за вашето приложение:

mkdir my-go-app
cd my-go-app

2. Инициализирайте проекта:

go mod init my-go-app

3. Създайте файл „main.go“:

nano main.go

4. Добавете следния код към файла „main.go“:
go
package main

import (
"fmt"
"net/http"
)

func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, world!")
})

http.ListenAndServe(":8080", nil)
}

5. Компилирайте приложението:

go build

Създаване на Docker образ

1. Създайте файл „Dockerfile“:

nano Dockerfile

2. Добавете следния код към файла „Dockerfile“:

FROM golang:1.19-alpine

WORKDIR /app

COPY go.mod go.sum ./

RUN go get -v

COPY . .

CMD ["go", "run", "main.go"]

3. Изградете Docker образа:

docker build -t my-go-app .

Конфигуриране на Nginx

1. Отворете конфигурационния файл на Nginx:

sudo nano /etc/nginx/sites-available/my-go-app.conf

2. Добавете следния код към файла:

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://127.0.0.1:8080;
}
}

3. Свържете файла към Nginx:

sudo ln -s /etc/nginx/sites-available/my-go-app.conf /etc/nginx/sites-enabled/

4. Рестартирайте Nginx:

sudo systemctl restart nginx

Тестване на приложението

1. Стартирайте Docker контейнера:

docker run -d -p 8080:8080 my-go-app

2. Отворете уеб браузър и въведете URL адреса на вашето приложение:

http://example.com

Трябва да видите съобщението „Hello, world!“.

Заключение

В това ръководство разгледахме стъпка по стъпка как да разположите Go уеб приложение с Docker и Nginx на сървър с Ubuntu 22.04. Покрихме инсталирането на необходимите компоненти, създаването на Docker образ за вашето приложение и конфигурирането на Nginx като прокси сървър. Следвайки тези стъпки, можете лесно да разположите свои собствени контейнеризирани Go приложения и да се възползвате от предимствата на контейнеризацията.

Често задавани въпроси (FAQ)

1. Какъв е размерът на RAM паметта, необходима за стартиране на контейнер с Go приложение?
Размерът на RAM паметта, необходима за стартиране на контейнер с Go приложение, ще варира в зависимост от сложността и ресурсите на приложението. Като общо правило са необходими поне 512 MB RAM памет.

2. Как да проверя състоянието на контейнерите на Docker?
Можете да проверите състоянието на контейнерите на Docker с командата docker ps.

3. Как да спра контейнер на Docker?
Можете да спрете контейнер на Docker с командата docker stop [ИД на контейнера].

4. Как да стартирам отново контейнер на Docker?
Можете да стартирате отново контейнер на Docker с командата docker restart [ИД на контейнера].

5. Как да премахна контейнер на Docker?
Можете да премахнете контейнер на Docker с командата docker rm [ИД на контейнера].

6. Как да конфигурирам Nginx като прокси сървър за множество приложения?
Можете да конфигурирате Nginx като прокси сървър за множество приложения, като създадете отделни блокове server в конфигурационния файл на Nginx.

7. Какво е Dockerfile?
Dockerfile е текстов файл, който съдържа инструкции за изграждане на Docker образ.

8. Как да кеширам данни в контейнер на Docker?
Можете да кеширате данни в контейнер на Docker, като използвате инструменти за кеширане като Redis или Memcached.