我的容器退出了,我也不知道为什么,这可能是因为我对Go以及Docker不够了解。
这是我的Dockerfile
和docker-compose.yml
。
该网络名称的原因是因为此docker-compose
文件正在与其他应用一起在父文件夹中被另一个文件扩展。也是版本2。
go get./
和go buid
是我从dockerhub的Go官方映像中获取的,而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
答案 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"]