mirror of
https://github.com/bingohuang/docker-labs.git
synced 2025-07-14 18:27:25 +08:00
commit
dde46f897e
26
Makefile
Normal file
26
Makefile
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Prepares the virtual box instance
|
||||||
|
prepare:
|
||||||
|
# Creates the virtual box
|
||||||
|
-docker-machine create -d virtualbox --virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.13.0-rc1/boot2docker.iso pwd && true
|
||||||
|
# Makes sure the docker daemon has the DinD image pulled
|
||||||
|
-docker-machine ssh pwd "docker pull franela/pwd-1.12.3-experimental-dind"
|
||||||
|
# Daemon should be swarm
|
||||||
|
-docker-machine ssh pwd "docker swarm init --advertise-addr $$(docker-machine ip pwd)"
|
||||||
|
# Stops to daemon to do further configurations on the box
|
||||||
|
-docker-machine stop pwd
|
||||||
|
# Adds the host GOPATH as a shared folder in the box
|
||||||
|
-VBoxManage sharedfolder add pwd --name gopathsrc --hostpath ${GOPATH}src --automount
|
||||||
|
# Do port forwaring so we can reach the app using localhost:3000
|
||||||
|
-VBoxManage modifyvm pwd --natpf1 "localhost,tcp,,3000,,3000"
|
||||||
|
|
||||||
|
# Starts the virtual box instance
|
||||||
|
start:
|
||||||
|
# Starts the machine
|
||||||
|
-docker-machine start pwd
|
||||||
|
# Make sure the folder where we'll mount the shared folder exists
|
||||||
|
docker-machine ssh pwd "sudo mkdir -p /go/src"
|
||||||
|
# Mount the host's GOPATH shared folder
|
||||||
|
docker-machine ssh pwd "sudo mount -t vboxsf gopathsrc /go/src"
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: prepare start run
|
@ -21,6 +21,11 @@ just run `docker swarm init`.
|
|||||||
It's also necessary to manually load the IPVS kernel module because as swarms are created in `dind`,
|
It's also necessary to manually load the IPVS kernel module because as swarms are created in `dind`,
|
||||||
the daemon won't load it automatically. Run the following command for that purpose: `sudo lsmod xt_ipvs`
|
the daemon won't load it automatically. Run the following command for that purpose: `sudo lsmod xt_ipvs`
|
||||||
|
|
||||||
|
If you are developing, there is a `Makefile` file with 2 targets that can set the whole environment for you (using docker-machine and virtual box).
|
||||||
|
Just run once `make create`, which will create the docker-machine environment.
|
||||||
|
Additionally, every time you want to start you environment run `make start`.
|
||||||
|
And to start the application on a container on the docker machine host, run: `eval $(docker-machine env pwd) && docker-compose up`
|
||||||
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
17
docker-compose.yml
Normal file
17
docker-compose.yml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
version: '2'
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
# pwd daemon container always needs to be named this way
|
||||||
|
container_name: pwd
|
||||||
|
# use the latest golang image
|
||||||
|
image: golang
|
||||||
|
# go to the right place and starts the app
|
||||||
|
command: /bin/sh -c 'cd /go/src/github.com/franela/play-with-docker; go run api.go'
|
||||||
|
ports:
|
||||||
|
# app exposes port 3000
|
||||||
|
- "3000:3000"
|
||||||
|
volumes:
|
||||||
|
# since this app creates networks and launches containers, we need to talk to docker daemon
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
# mount the box mounted shared folder to the container
|
||||||
|
- /go/src:/go/src
|
Loading…
x
Reference in New Issue
Block a user