Golang docker контейнер выходит сразу после запуска - PullRequest
0 голосов
/ 10 апреля 2020

Мой контейнер выходит, и я не знаю почему, возможно, потому что я не знаю достаточно Go и, конечно, Docker.

Вот мои Dockerfile и docker-compose.yml.

Причина того, что это сетевое имя, заключается в том, что этот файл docker-compose расширяется другим в родительской папке вместе с другими приложениями. Также версия 2.

go get./ и go buid Я взял это из Go официального образа на dockerhub, а go mod download и go run cmd/server/main.go - команды, необходимые приложению для запуска.

FROM golang:1.13

RUN mkdir /prework_ms

COPY . /prework_ms

WORKDIR /prework_ms

RUN cd /prework_ms \
    go get ./ \
    go build \
    go mod download \
    go run cmd/server/main.go

EXPOSE 8080

docker -compose.yml:

version: "2"
services:
    go:
        build: .
        volumes:
            - .:/prework_ms
        ports:
            - "8080:8080"
        networks:
            - appnet
    mysql:
        image: mysql:5.7.25
        ports:
            - "3306:3306"
        volumes:
            - ./sql:/docker-entrypoint-initdb.d/
        networks:
            - appnet
        environment:
            MYSQL_ROOT_PASSWORD: prework
            MYSQL_DATABASE: prework

1 Ответ

1 голос
/ 10 апреля 2020

Команда, запускающая службу, объявляется с использованием инструкции Dockerfile CMD. Кроме того, команды RUN должны быть разделены с помощью &&:

FROM golang:1.13

RUN mkdir /prework_ms   
COPY . /prework_ms   
WORKDIR /prework_ms   
RUN go get ./ && go build && go mod download
EXPOSE 8080

CMD ["go", "run", "cmd/server/main.go"]
оболочки
...