1
+ ARG VERSION=dev
2
+ ARG IS_BUILDING_GPU_IMAGE=0
3
+ #ARG BASE_IMAGE=continuumio/miniconda3:4.7.12
4
+ ARG BASE_IMAGE=fedml/fedml:latest-torch1.13.1-cuda11.6-cudnn8-devel
5
+ ARG FEDML_PIP_HOME=/usr/local/lib/python3.8/dist-packages/fedml
6
+ FROM ${BASE_IMAGE} AS fedml-image-base
7
+
8
+ ADD ./devops/scripts/aws ./fedml/aws
9
+ ADD ./devops/scripts/setup-aws-cli.sh ./fedml/setup-aws-cli.sh
10
+ ADD ./devops/scripts/set-aws-credentials.sh ./fedml/set-aws-credentials.sh
11
+ ADD ./devops/scripts/docker /usr/bin/
12
+ ADD ./devops/scripts/kubectl /usr/bin/
13
+
14
+ ADD ./devops/scripts/requirements.txt ./fedml/requirements.txt
15
+ ADD ./devops/scripts/setup-conda-env.sh ./fedml/setup-conda-env.sh
16
+
17
+ RUN chmod a+x /usr/bin/docker
18
+ RUN chmod a+x /usr/bin/kubectl
19
+ RUN chmod a+x ./fedml/setup-aws-cli.sh
20
+ RUN chmod a+x ./fedml/set-aws-credentials.sh
21
+ RUN ./fedml/setup-aws-cli.sh
22
+
23
+ RUN apt-get update
24
+ #RUN apt-get -y install gettext-base
25
+ #RUN apt-get -y install unar wget
26
+ #RUN apt-get -y install libquadmath0
27
+
28
+ RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq gettext-base < /dev/null > /dev/null
29
+ RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq unar wget < /dev/null > /dev/null
30
+ RUN sudo DEBIAN_FRONTEND=noninteractive apt-get install -qq libquadmath0 < /dev/null > /dev/null
31
+
32
+ RUN chmod a+x ./fedml/setup-conda-env.sh
33
+ RUN bash ./fedml/setup-conda-env.sh ${IS_BUILDING_GPU_IMAGE}
34
+
35
+ #RUN pip install --upgrade pip
36
+ #RUN pip3 uninstall fedml
37
+
38
+ RUN pip3 install --upgrade fedml
39
+ RUN pip3 install -r ./fedml/requirements.txt
40
+ RUN pip3 install --upgrade gevent
41
+
42
+
43
+ FROM ${BASE_IMAGE} AS fedml-training-env-base
44
+
45
+ ADD ./devops/scripts/runner.sh ./fedml/runner.sh
46
+
47
+ ADD ./devops/scripts/requirements.txt ./fedml/requirements.txt
48
+
49
+ RUN chmod a+x ./fedml/runner.sh
50
+ RUN echo "Updating..."
51
+
52
+ RUN pip3 install -r ./fedml/requirements.txt
53
+
54
+ COPY ./python ./fedml/fedml-pip
55
+ COPY ./python/fedml ${FEDML_PIP_HOME}
56
+ WORKDIR ./fedml/fedml-pip
57
+ RUN pip3 install -e ./
58
+ #RUN pip3 install -e '.[tensorflow]'
59
+ #RUN pip3 install -e '.[jax]'
60
+ #RUN pip3 install -e '.[mxnet]'
61
+
62
+ WORKDIR /fedml
63
+
64
+
65
+ FROM ${BASE_IMAGE} AS fedml-image-base-with-version
66
+
67
+ RUN pip3 install MNN==1.1.6
68
+
69
+ WORKDIR /fedml
70
+
71
+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
72
+ COPY --from=fedml-training-env-base /fedml/fedml-pip/fedml ${FEDML_PIP_HOME}
73
+
74
+ ENV MODE=normal FEDML_VERSION=${VERSION} ACCOUNT_ID=0 SERVER_DEVICE_ID=0 \
75
+ FEDML_PACKAGE_NAME=package FEDML_PACKAGE_URL=s3_url \
76
+ FEDML_RUNNER_CMD=3dsad
77
+
78
+ CMD fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -s -r cloud_server -rc ${FEDML_RUNNER_CMD} -id ${SERVER_DEVICE_ID}; ./runner.sh
79
+
80
+
81
+ FROM ${BASE_IMAGE} AS fedml-client-agent
82
+
83
+ WORKDIR /fedml
84
+
85
+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
86
+ COPY --from=fedml-training-env-base /fedml/fedml-pip/fedml ${FEDML_PIP_HOME}
87
+
88
+ ENV ACCOUNT_ID=0 FEDML_VERSION=${VERSION} CLIENT_DEVICE_ID=0 CLIENT_OS_NAME=linux
89
+
90
+ CMD fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -c -id ${CLIENT_DEVICE_ID} -os ${CLIENT_OS_NAME}; ./runner.sh
91
+
92
+
93
+ FROM ${BASE_IMAGE} AS fedml-server-agent
94
+
95
+ WORKDIR /fedml
96
+
97
+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
98
+ COPY --from=fedml-image-base /fedml/fedml-pip/python/fedml ${FEDML_PIP_HOME}
99
+
100
+ ENV MODE=normal FEDML_VERSION=${VERSION} ACCOUNT_ID=0 SERVER_AGENT_ID=0 \
101
+ AWS_IAM_ACCESS_ID=0 \
102
+ AWS_IAM_ACCESS_KEY=0 \
103
+ AWS_REGION=0
104
+
105
+ CMD ./set-aws-credentials.sh ${AWS_IAM_ACCESS_ID} ${AWS_IAM_ACCESS_KEY} ${AWS_REGION};fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -s -r cloud_agent -id ${SERVER_AGENT_ID};./runner.sh
106
+
107
+
108
+ FROM ${BASE_IMAGE} AS fedml-edge-server
109
+
110
+ WORKDIR /fedml
111
+
112
+ COPY --from=fedml-training-env-base /fedml/fedml-pip /fedml/fedml-pip
113
+ COPY --from=fedml-image-base /fedml/fedml-pip/python/fedml ${FEDML_PIP_HOME}
114
+
115
+ ENV ACCOUNT_ID=0 FEDML_VERSION=${VERSION} SERVER_DEVICE_ID=0 SERVER_OS_NAME=linux
116
+
117
+ CMD fedml login ${ACCOUNT_ID} -v ${FEDML_VERSION} -s -id ${SERVER_DEVICE_ID} -os ${SERVER_OS_NAME};./runner.sh
0 commit comments