8bb75aca924fd96c8b99f79dc13cde3e6e0943bf
[ric-plt/appmgr.git] / build / make.docker.mk
1 #   Copyright (c) 2019 AT&T Intellectual Property.
2 #   Copyright (c) 2019 Nokia.
3 #
4 #   Licensed under the Apache License, Version 2.0 (the "License");
5 #   you may not use this file except in compliance with the License.
6 #   You may obtain a copy of the License at
7 #
8 #       http://www.apache.org/licenses/LICENSE-2.0
9 #
10 #   Unless required by applicable law or agreed to in writing, software
11 #   distributed under the License is distributed on an "AS IS" BASIS,
12 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 #   See the License for the specific language governing permissions and
14 #   limitations under the License.
15
16 #------------------------------------------------------------------------------
17 #
18 #------------------------------------------------------------------------------
19 ifndef MAKE_DOCKER_TARGETS
20 MAKE_DOCKER_TARGETS:=1
21
22 .PHONY: docker-build docker-clean
23
24
25 docker-name_%:
26         @echo $($*_DCKR_FULLNAME)
27
28 docker-build_%:
29         @(\
30                 test -z "$${SSH_PRIVATE_KEY}" && SSH_PRIVATE_KEY=$$(cat $${HOME}/.ssh/id_rsa);\
31                 docker build --target $* $($*_DCKR_B_OPTS) --build-arg SSH_PRIVATE_KEY="$${SSH_PRIVATE_KEY}" -t $($*_DCKR_FULLNAME) -f $($*_DCKR_FILE) . ;\
32         )
33
34 docker-irun_%:
35         docker run $($*_DCKR_R_OPTS) $($*_DCKR_FULLNAME) /bin/bash
36
37 docker-irun-mounted_%:
38         docker run $($*_DCKR_R_OPTS) -v $(shell pwd):/ws/go/src/${PACKAGEURL} --workdir "/ws/go/src/${PACKAGEURL}" $($*_DCKR_FULLNAME) /bin/bash
39
40 docker-run_%:
41         docker run $($*_DCKR_R_OPTS) $($*_DCKR_FULLNAME)
42
43 docker-run-redished_%:
44         @( \
45                 RETVAL=0;\
46                 docker network create --driver bridge $($*_DCKR_FULLNAME)-run_network;\
47                 docker run $($*_DCKR_R_OPTS) -d --name $($*_DCKR_FULLNAME)-run_redis --network $($*_DCKR_FULLNAME)-run_network redis;\
48                 docker run $($*_DCKR_R_OPTS) --name $($*_DCKR_FULLNAME)-run_xapp --network $($*_DCKR_FULLNAME)-run_network -e DBAAS_SERVICE_HOST=$($*_DCKR_FULLNAME)-run_redis $($*_DCKR_FULLNAME);\
49                 RETVAL=$$?;\
50                 docker stop $($*_DCKR_FULLNAME)-run_redis;\
51                 docker network rm $($*_DCKR_FULLNAME)-run_network;\
52                 exit $${RETVAL};\
53         )
54         
55 docker-clean_%:
56         docker rmi $($*_DCKR_FULLNAME) || true
57
58
59 .SECONDEXPANSION:
60 docker-build: DCKR_TARGETS:=
61 docker-build: $$(DCKR_TARGETS)
62
63 .SECONDEXPANSION:
64 docker-clean: DCKR_TARGETS:=
65 docker-clean: $$(DCKR_TARGETS)
66
67 endif
68
69 #------------------------------------------------------------------------------
70 #
71 #------------------------------------------------------------------------------
72
73 ifndef DCKR_FILE
74 DCKR_FILE:="Dockerfile"
75 endif
76
77 ifndef BUILD_PREFIX
78 BUILD_PREFIX:="${USER}-"
79 endif
80
81
82 #------------------------------------------------------------------------------
83 #
84 #------------------------------------------------------------------------------
85
86 ifndef $(DCKR_NAME)_DCKR_B_PREFIX
87 $(DCKR_NAME)_DCKR_B_PREFIX:=$(BUILD_PREFIX)
88 endif
89
90 ifndef $(DCKR_NAME)_DCKR_FILE
91 $(DCKR_NAME)_DCKR_FILE:=$(DCKR_FILE)
92 endif
93
94 $(DCKR_NAME)_DCKR_B_PREFIX:=$(subst /,_,$(shell echo $($(DCKR_NAME)_DCKR_B_PREFIX) | tr '[:upper:]' '[:lower:]'))
95
96 $(DCKR_NAME)_DCKR_FULLNAME:=$($(DCKR_NAME)_DCKR_B_PREFIX)$(DCKR_NAME)
97
98 $(DCKR_NAME)_DCKR_B_OPTS:=${DCKR_B_OPTS}
99 $(DCKR_NAME)_DCKR_B_OPTS:=$($(DCKR_NAME)_DCKR_B_OPTS) --network=host
100
101 ifndef PACKAGEURL
102 $(DCKR_NAME)_DCKR_B_OPTS:=$($(DCKR_NAME)_DCKR_B_OPTS) --build-arg PACKAGEURL=${PACKAGEURL}
103 endif
104
105 ifndef PACKAGEREPO
106 $(DCKR_NAME)_DCKR_B_OPTS:=$($(DCKR_NAME)_DCKR_B_OPTS) --build-arg PACKAGEREPO=${PACKAGEREPO}
107 endif
108
109 ifndef BUILD_PREFIX
110 $(DCKR_NAME)_DCKR_B_OPTS:=$($(DCKR_NAME)_DCKR_B_OPTS) --build-arg BUILD_PREFIX=${BUILD_PREFIX}
111 endif
112
113
114 $(DCKR_NAME)_DCKR_R_OPTS:=${DCKR_R_OPTS}
115 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS) --rm -i --net=host
116 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -t 0 && echo ' -t')
117 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -e /etc/localtime && echo ' -v /etc/localtime:/etc/localtime:ro')
118 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -e /var/run/docker.sock && echo ' -v /var/run/docker.sock:/var/run/docker.sock')
119 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -e ${HOME}/.docker && echo ' -v ${HOME}/.docker:/ws/.docker:ro')
120 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -e ${HOME}/.netrc && echo ' -v ${HOME}/.netrc:/ws/.netrc:ro')
121 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -e ${HOME}/.ssh && echo ' -v ${HOME}/.ssh:/ws/.ssh:ro')
122 $(DCKR_NAME)_DCKR_R_OPTS:=$($(DCKR_NAME)_DCKR_R_OPTS)$(shell test -e ${HOME}/.gitconfig && echo ' -v ${HOME}/.gitconfig:/ws/.gitconfig:ro')
123
124
125 docker-build: DCKR_TARGETS+=docker-build_$(DCKR_NAME)
126
127 docker-clean: DCKR_TARGETS+=docker-clean_$(DCKR_NAME)
128