首页 > 解决方案 > Docker撰写working_dir问题

问题描述

我正在尝试使用 docker-compose 运行一个 golang 应用程序,下面是我的 compose 配置。

version: '2'
services:

    #Application container
    go:
        image: golang:1.8-alpine
        ports:
            - "80:8080"
        links:
            - mongodb
        environment:
            DEBUG: 'true'
            PORT: '8080'
        working_dir: /go/src/simple-golang-app
        command: go run main.go
        volumes:
            - ./simple-golang-app:/go/src/simple-golang-app

    mongodb:
        image: mvertes/alpine-mongo:3.2.3
        restart: unless-stopped
        ports:
            - "27017:27017"

在使用命令“docker-compose up”运行撰写时,即使 main.go 在工作目录中可用,我也会收到错误“stat main.go:没有这样的文件或目录”。

标签: godocker-compose

解决方案


当您的主机目录布局为

oxo@thor ~/Dropbox/Documents/code/docker/golang_working_dir $ find .
.
./docker-compose.yaml
./simple-golang-app
./simple-golang-app/main.go

所以我们在这里

cd ~/Dropbox/Documents/code/docker/golang_working_dir
docker-compose up

对于涉及依赖项的更复杂的构建,我使用 Dockerfile :

FROM golang:1.8-alpine

RUN mkdir -p /go/src/simple-golang-app/
COPY simple-golang-app/main.go   /go/src/simple-golang-app
WORKDIR  /go/src/simple-golang-app
RUN apk add --no-cache git mercurial && go get -v -t ./...  && apk del git mercurial
RUN go install ./...
RUN go build 

ENV PORT 9000

现在更新您的 docker-compose.yaml 以使用这个新图像:

老的

image: golang:1.8-alpine

新的

image: nirmal_golang_alpine:latest

所以你的命令是

docker build --tag nirmal_golang_alpine

docker-compose up

推荐阅读