Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Docker compose y Docker File para un servidor en Go

Tiempo de lectura: < 1 minuto

Hoy vamos a crear un Docker compose capaz de ejecutar el entorno de Go.

Roof - Pexels

Primero vamos a crear un Dockerfile con la configuración para Go Lang:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Usa la imagen base de Go 1.23
FROM golang:1.23 AS builder
# Establece el directorio de trabajo
WORKDIR /app
# Copia el resto del código fuente desde app_go
COPY app/. .
# Crea un archivo go.mod vacío
RUN go mod init app
# Agrega la dependencia de gorilla/mux
RUN go get github.com/gorilla/mux
# Compila la aplicación
RUN CGO_ENABLED=0 GOOS=linux go build -o main .
# Crea la imagen final usando Alpine
FROM alpine:latest
# Copia el binario compilado desde el builder
WORKDIR /root/
COPY --from=builder /app/main .
# Expone el puerto de la aplicación
EXPOSE 8080
# Comando para ejecutar la aplicación
CMD ["./main"]
# Usa la imagen base de Go 1.23 FROM golang:1.23 AS builder # Establece el directorio de trabajo WORKDIR /app # Copia el resto del código fuente desde app_go COPY app/. . # Crea un archivo go.mod vacío RUN go mod init app # Agrega la dependencia de gorilla/mux RUN go get github.com/gorilla/mux # Compila la aplicación RUN CGO_ENABLED=0 GOOS=linux go build -o main . # Crea la imagen final usando Alpine FROM alpine:latest # Copia el binario compilado desde el builder WORKDIR /root/ COPY --from=builder /app/main . # Expone el puerto de la aplicación EXPOSE 8080 # Comando para ejecutar la aplicación CMD ["./main"]
# Usa la imagen base de Go 1.23
FROM golang:1.23 AS builder

# Establece el directorio de trabajo
WORKDIR /app

# Copia el resto del código fuente desde app_go
COPY app/. .

# Crea un archivo go.mod vacío
RUN go mod init app

# Agrega la dependencia de gorilla/mux
RUN go get github.com/gorilla/mux

# Compila la aplicación
RUN CGO_ENABLED=0 GOOS=linux go build -o main .

# Crea la imagen final usando Alpine
FROM alpine:latest

# Copia el binario compilado desde el builder
WORKDIR /root/
COPY --from=builder /app/main .

# Expone el puerto de la aplicación
EXPOSE 8080

# Comando para ejecutar la aplicación
CMD ["./main"]

Tenemos que tener nuestra aplicación dentro de una carpeta llamada ./app

Después iniciará toda la aplicación.

Ahora vamos a crear el docker-compose.yml

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
services:
app:
build:
context: .
ports:
- "8080:8080" # Mapea el puerto 8080 del contenedor al 8080 de la máquina host
environment:
DB_URL: maria_db # Cambia esto por la URL de tu base de datos si es necesario
volumes:
- ./app:/app # Monta la carpeta app_go en /app del contenedor
restart: unless-stopped
services: app: build: context: . ports: - "8080:8080" # Mapea el puerto 8080 del contenedor al 8080 de la máquina host environment: DB_URL: maria_db # Cambia esto por la URL de tu base de datos si es necesario volumes: - ./app:/app # Monta la carpeta app_go en /app del contenedor restart: unless-stopped
services:
  app:
    build: 
      context: .
    ports:
      - "8080:8080"  # Mapea el puerto 8080 del contenedor al 8080 de la máquina host
    environment:
      DB_URL: maria_db # Cambia esto por la URL de tu base de datos si es necesario
    volumes:
      - ./app:/app  # Monta la carpeta app_go en /app del contenedor
    restart: unless-stopped

Y con esto solo tenemos que hacer un:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
docker compose up -d
docker compose up -d
docker compose up -d
0

Deja un comentario