컨테이너 Go

5356 단어 GoDocker

Go 컨테이너화


ySQL로 이동 계속.
나는 로컬에서 이동하는 GO를 용기화하여 로컬 MySQL에 연결하여 표 정보를 얻고 싶다.
완료된 코드는 GitHub 에 있습니다.

해봤어요.


docker 버전

$ docker -v
Docker version 18.09.0, build 4d60db4

DockerHub에서 golang 이미지 인쇄


docker 이미지를pull합니다.버전이 지정되지 않으면 latest가 설치됩니다.
Golang의 Official Repository
$ docker pull golang
$ docker pull golang:1.8

문서 파일 만들기


Docker 이미지를 만드는 데 사용되는 파일입니다.
# 自分のイメージの元として現在の公式レポジトリを使用
FROM golang:1.8

# 作者
MAINTAINER uguisuhohokekyo

# 環境変数の設定
# ENV aaa=bbb

# ワーキングディレクトリ
# WORKDIR

# ローカルからコピー
COPY /src /go/src/
COPY /config /go/config/

# 特定のネットワーク・ポートをコンテナが実行時にリッスンすることを Docker に伝えます
EXPOSE 8080

#パッケージインストール
RUN go get -u github.com/go-sql-driver/mysql

# コンテナ内で実行するコマンド
CMD ["go", "run", "/go/src/mysql.go"]

.dockerignore 제작


CLI에서 특정 파일 및 디렉토리를 제외합니다.
# 特定のファイルとディレクトリはCLIの処理から除外
*/tmp*
.git*
!README.md

프로파일


지난번까지 코드에 설정이 있었어요.나는 12factor에 따라 설정을 코드에서 분리하고 싶다.
json의 설정 파일을 만들고 환경 의존적인 설정을 작성합니다. (이번에는 MYSQL의 연결 정보입니다.)
config/mysql-config.json
{
    "//": "docker用",
    "host": "host.docker.internal",
    "user": "uguisu",
    "pass": "sqlserver",
    "port": "3306",
    "dbname": "goods"
}
"host.docker.internal"은 로컬 환경 DNS 이름입니다. 지정한 후 Docker 환경에서 로컬 환경으로 연결할 수 있습니다.
Networking features in Docker for Mac

mysql.go


가져오기 프로파일로 수정합니다.내용 참조GitHub.

이미지 구축


그럼 이미지 하나 만들어볼게요.t로 명명합니다.
$ ls
Dockerfile  README.md   config      src
$ docker build -t golang-mysql .
$ docker images | grep golang-mysql
golang-mysql            latest              5d56e672d35d        10 minutes ago      715MB

docker run


이미지에서 프로세스를 생성합니다.
 docker run --rm -d -p 8080:8080 -it golang-mysql
옵션 요약 정보
-i, --interactive                    Keep STDIN open even if not attached
-p, --publish list                   Publish a container's port(s) to the host
-d, --detach                         Run container in background and print container ID
-t, --tty                            Allocate a pseudo-TTY
--rm                             Automatically remove the container when it exits

확인


ySQL 시작 확인
http://localhost:8080/getfruit
다음은 성공입니다.

청소하다

docker stop $(docker ps -q)
에서 설명한 대로 해당 매개변수의 값을 수정합니다.

참고 자료


golang으로 Docker ~ go의 웹 서버를 시작하여 Docker로 만들어 보았습니다~
Dockerfile 모범 사례

좋은 웹페이지 즐겨찾기