Docker compose$GOPATH/go.mod存在,但不应存在
我有一个单独运行的Dockerfile 但是当我从docker compose-up运行它时 我得到:Docker compose$GOPATH/go.mod存在,但不应存在,docker,go,docker-compose,Docker,Go,Docker Compose,我有一个单独运行的Dockerfile 但是当我从docker compose-up运行它时 我得到:$GOPATH/go.mod存在,但不应 下面是终端输出的一个片段 Successfully tagged app_app:latest Starting golang_db ... done Starting golang_app ... done Attaching to golang_db, golang_app golang_app | $GOPATH/go.mod exists but
$GOPATH/go.mod存在,但不应
下面是终端输出的一个片段
Successfully tagged app_app:latest
Starting golang_db ... done
Starting golang_app ... done
Attaching to golang_db, golang_app
golang_app | $GOPATH/go.mod exists but should not
.
.
golang_db | Version: '5.6.48' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
golang_app exited with code 1
有什么建议吗
#docker-compose.yml
version: '3'
services:
db:
build:
context: ./MySQL
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: test_db
MYSQL_USER: docker
MYSQL_PASSWORD: docker
container_name: golang_db
ports:
- "3306:3306"
tty: true
app:
build:
context: ./Go
volumes:
- "./Go:/go"
container_name: golang_app
ports:
- "9000:9000"
tty: true
depends_on:
- db
在GOPATH的根目录中,不需要任何包。通常期望有一个子目录src/github.com/someproject/somerepo,这很可能是警告的根本原因我把它整理好了,上面的Dockerfile已经更新了。为什么要构建应用程序(顺便说一句,使用包名时使用
go build
),然后,每次使用go run
启动容器时都重新构建它?另外,容器中的GOPATH是什么?你用什么来塑造这个形象?同样奇怪的是,你添加了这些文件,然后又单独复制了一些。正在添加什么?Dockerfile已更新。我做docker compose Up时也会有同样的行为,为什么每次运行容器时都不使用go build
Executive而不是执行go run
?您应该发布答案,而不是编辑您的问题。现在没有简单的方法知道你是如何解决的。如果不是答案,你不应该发布答案,句号。这不是一个答案,它只是一个个人的进展更新。
#Go/Dockerfile
FROM golang:alpine AS builder
ENV GO111MODULE=on
RUN mkdir /app
ADD . /app/
WORKDIR /app
COPY ./structs.go .
COPY ./handlers.go .
COPY ./server.go .
COPY ./favicon.ico .
COPY ./assets /assets
RUN go mod init stuff.com
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build $(ls -1 *.go)
EXPOSE 9000
CMD ["go", "run", "."]
#MySQL/Dockerfile
FROM mysql:5.6
COPY test.sql /docker-entrypoint-initdb.d/test.sql