我有一个使用go语言作为后端的网络应用。当我运行网站时,我只做go build; ./projectName
,它将在本地服务器端口8000上运行。如何在容器上运行此Web应用程序?我可以在容器上运行像nginx这样的示例图像,但是如何为我的项目创建自己的图像。我在项目文件夹中使用以下代码创建了一个Dockerfile:
FROM nginx:latest
WORKDIR static/html/
COPY . /usr/src/app
然后使用Dockerfile制作了一个映像,但是当我在容器上运行它并转到localhost:myPort / static / html / page.html时,它说未找到404页。我的另一个问题是,码头工人只能在容器上运行静态页面吗?因为我的网站可以接收和发送数据。谢谢
this is my docker file(./ todo是我的项目名称和文件夹名称)
this is my terminal(如您所见,容器将立即退出)
答案 0 :(得分:1)
我想您没有将Docker Port暴露在容器外部。 这就是为什么您看不到任何输出,而不仅仅是特定于GO Program的原因。 尝试将以下几行添加到您的docker compose文件中
EXPOSE 80(whichever port you want it to be)
EXPOSE 443
EXPOSE 3306
这将使容器可以从外部访问
答案 1 :(得分:1)
这是我为我的GOlang网络应用使用Gin-gonic
框架所做的工作-
我的Dockerfile:
FROM golang:latest
# Author
MAINTAINER dangminhtruong
# Create working folder
RUN mkdir /app
COPY . /app
RUN apt -y update && apt -y install git
RUN go get github.com/go-sql-driver/mysql
RUN go get github.com/gosimple/slug
RUN go get github.com/gin-gonic/gin
RUN go get gopkg.in/russross/blackfriday.v2
RUN go get github.com/gin-gonic/contrib/sessions
WORKDIR /app
然后构建docker映像
docker build -t web-app:latest .
最后,启动我的网络应用
docker run -it -p 80:8080 -d web-app:latest go run main.go //My webapp start at 8080 port
希望这项帮助
答案 2 :(得分:0)
这是您的Dockerfile的样子:
FROM golang:latest
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN go build -o main .
EXPOSE 8000
CMD ["/app/main"]