-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdockerfile.aws
53 lines (42 loc) · 1.83 KB
/
dockerfile.aws
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Usar la imagen base de Golang con Alpine para arquitectura amd64
FROM --platform=linux/amd64 golang:1.21-alpine3.18 AS builder
# Instalar las dependencias necesarias para la compilación
RUN apk add --no-cache build-base opus-dev opusfile-dev \
&& go install github.com/bwmarrin/dca/cmd/dca@latest
# Establecer el directorio de trabajo
WORKDIR /src/
# Copiar los archivos de go.mod y go.sum para instalar las dependencias
COPY go.mod go.sum ./
RUN go mod download
# Copiar el código fuente del proyecto
COPY cmd/ cmd/
COPY internal/ internal/
# Compilar el binario usando la arquitectura amd64
RUN CGO_ENABLED=1 GOARCH=amd64 GOMAXPROCS=4 go build -ldflags="-s -w" -o /bin/butakero cmd/main.go
# Etapa final del contenedor
# Usar la imagen base de Alpine para arquitectura amd64
FROM --platform=linux/amd64 alpine:edge
# Definir las variables de entorno necesarias
ENV DISCORD_TOKEN=
ENV COMMAND_PREFIX=
ENV YOUTUBE_API_KEY=
ENV BUCKET_NAME=
ENV REGION=
ENV ACCESS_KEY=
ENV SECRET_KEY=
# Instalar las dependencias necesarias para la ejecución del binario
RUN apk add --no-cache ffmpeg wget opusfile python3 py3-pip \
# Crear un entorno virtual y activar el entorno
&& python3 -m venv /venv \
&& /venv/bin/pip install --upgrade pip \
# Instalar yt-dlp y el plugin OAuth2 en el entorno virtual
&& /venv/bin/pip install yt-dlp \
&& /venv/bin/pip install -U https://github.com/coletdjnz/yt-dlp-youtube-oauth2/archive/refs/heads/master.zip
# Copiar el binario compilado desde la etapa de construcción
COPY --from=builder /bin/butakero /bin/butakero
# Copiar la herramienta dca compilada desde la etapa de construcción
COPY --from=builder /go/bin/dca /usr/local/bin/dca
# Establecer el entorno virtual como el predeterminado para los comandos
ENV PATH="/venv/bin:$PATH"
# Definir el comando de inicio del contenedor
CMD ["/bin/butakero"]