Golang Docker容器启动后立即退出

时间:2020-04-10 16:48:01

标签: docker go docker-compose

我的容器退出了,我也不知道为什么,这可能是因为我对Go以及Docker不够了解。

这是我的Dockerfiledocker-compose.yml

该网络名称的原因是因为此docker-compose文件正在与其他应用一起在父文件夹中被另一个文件扩展。也是版本2。

go get./go buid是我从dockerhub的Go官方映像中获取的,而go mod downloadgo 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 个答案:

答案 0 :(得分:1)

使用Dockerfile CMD指令声明启动服务的命令。另外,RUN命令应使用shell的&&分隔:

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"]