@@ -19,56 +19,64 @@ RUN apt update && \
19
19
gosu \
20
20
&& apt clean && rm -rf /var/lib/apt/lists/*
21
21
22
+ # Make directories under opt and set owner to ubuntu
23
+ RUN mkdir -p /opt/.cargo /opt/.rustup /opt/.nvm /opt/.npm /opt/.snarkjs /opt/omron/neurons && \
24
+ chown -R ubuntu:ubuntu /opt && \
25
+ chmod -R 775 /opt/omron && \
26
+ chown root:root /opt
27
+
22
28
# Use ubuntu user
23
29
USER ubuntu
24
- WORKDIR /home/ubuntu
30
+ WORKDIR /opt
25
31
26
32
# Install Rust
27
33
ENV RUST_TOOLCHAIN=nightly-2024-09-30
34
+ ENV CARGO_HOME=/opt/.cargo
35
+ ENV RUSTUP_HOME=/opt/.rustup
28
36
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y && \
29
- ~/.cargo/bin/rustup toolchain install ${RUST_TOOLCHAIN} && \
30
- ~/.cargo/bin/rustup default ${RUST_TOOLCHAIN} && \
31
- ~/.cargo/bin/rustup toolchain remove stable
32
- ENV PATH="~/.cargo/bin:${PATH}"
37
+ /opt/.cargo/bin/rustup toolchain install ${RUST_TOOLCHAIN} && \
38
+ /opt/.cargo/bin/rustup default ${RUST_TOOLCHAIN} && \
39
+ /opt/.cargo/bin/rustup toolchain remove stable && \
40
+ chmod -R 775 /opt/.cargo /opt/.rustup
41
+ ENV PATH="/opt/.cargo/bin:${PATH}"
33
42
34
43
# Install Jolt
35
44
# ENV JOLT_VERSION=dd9e5c4bcf36ffeb75a576351807f8d86c33ec66
36
45
# RUN cargo +${RUST_TOOLCHAIN} install --git https://github.com/a16z/jolt --rev ${JOLT_VERSION} --force --bins jolt
37
46
38
47
# Install node et al.
48
+ ENV NVM_DIR=/opt/.nvm
39
49
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash && \
40
- export NVM_DIR="/home/ubuntu/.nvm" && \
41
50
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" && \
42
51
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" && \
43
52
nvm install 20 && \
44
- npm install --prefix /
home/ubuntu /.snarkjs
[email protected] && \
53
+ npm install --prefix /
opt /.snarkjs
[email protected] && \
45
54
mkdir -p ~/.local/bin && \
46
55
ln -s $(which node) /home/ubuntu/.local/bin/node && \
47
- ln -s $(which npm) /home/ubuntu/.local/bin/npm
56
+ ln -s $(which npm) /home/ubuntu/.local/bin/npm && \
57
+ chmod -R 775 /opt/.nvm /opt/.npm /opt/.snarkjs
48
58
ENV PATH="/home/ubuntu/.local/bin:${PATH}"
49
59
50
60
# Copy omron and install Python dependencies (make sure owner is ubuntu)
51
- COPY neurons /home/ubuntu/omron/neurons
52
- COPY pyproject.toml /home/ubuntu/omron/pyproject.toml
53
- COPY uv.lock /home/ubuntu/omron/uv.lock
54
- USER root
55
- RUN chown -R ubuntu:ubuntu /home/ubuntu/omron
56
- USER ubuntu
61
+ COPY --chown=ubuntu:ubuntu --chmod=775 neurons /opt/omron/neurons
62
+ COPY --chown=ubuntu:ubuntu --chmod=775 pyproject.toml /opt/omron/pyproject.toml
63
+ COPY --chown=ubuntu:ubuntu --chmod=775 uv.lock /opt/omron/uv.lock
57
64
RUN pipx install uv && \
58
- cd ~ /omron && \
65
+ cd /opt /omron && \
59
66
~/.local/bin/uv sync --locked --no-dev --compile-bytecode && \
60
67
~/.local/bin/uv cache clean && \
61
- echo "source ~/omron/.venv/bin/activate" >> ~/.bashrc
62
- ENV PATH="/home/ubuntu/omron/.venv/bin:${PATH}"
68
+ echo "source /opt/omron/.venv/bin/activate" >> ~/.bashrc && \
69
+ chmod -R 775 /opt/omron/.venv
70
+ ENV PATH="/opt/omron/.venv/bin:${PATH}"
63
71
64
72
# Set workdir for running miner.py or validator.py and compile circuits
65
- WORKDIR /home/ubuntu /omron/neurons
73
+ WORKDIR /opt /omron/neurons
66
74
ENV OMRON_NO_AUTO_UPDATE=1
67
- RUN OMRON_DOCKER_BUILD=1 /home/ubuntu /omron/.venv/bin/python3 miner.py && \
68
- rm -rf ~ /omron/neurons/deployment_layer/*/target/release/build && \
69
- rm -rf ~ /omron/neurons/deployment_layer/*/target/release/deps && \
70
- rm -rf ~ /omron/neurons/deployment_layer/*/target/release/examples && \
71
- rm -rf ~ /omron/neurons/deployment_layer/*/target/release/incremental && \
75
+ RUN OMRON_DOCKER_BUILD=1 /opt /omron/.venv/bin/python3 miner.py && \
76
+ rm -rf /opt /omron/neurons/deployment_layer/*/target/release/build && \
77
+ rm -rf /opt /omron/neurons/deployment_layer/*/target/release/deps && \
78
+ rm -rf /opt /omron/neurons/deployment_layer/*/target/release/examples && \
79
+ rm -rf /opt /omron/neurons/deployment_layer/*/target/release/incremental && \
72
80
rm -rf ~/.bittensor && \
73
81
rm -rf /tmp/omron
74
82
USER root
@@ -78,21 +86,21 @@ set -e
78
86
if [ -n "$PUID" ]; then
79
87
if [ "$PUID" = "0" ]; then
80
88
echo "Running as root user"
81
- /home/ubuntu /omron/.venv/bin/python3 "$@"
89
+ /opt /omron/.venv/bin/python3 "$@"
82
90
else
83
91
echo "Changing ubuntu user id to $PUID"
84
92
usermod -u "$PUID" ubuntu
85
- gosu ubuntu /home/ubuntu /omron/.venv/bin/python3 "$@"
93
+ gosu ubuntu /opt /omron/.venv/bin/python3 "$@"
86
94
fi
87
95
else
88
- gosu ubuntu /home/ubuntu /omron/.venv/bin/python3 "$@"
96
+ gosu ubuntu /opt /omron/.venv/bin/python3 "$@"
89
97
fi
90
98
EOF
91
99
RUN chmod +x /entrypoint.sh
92
100
ENTRYPOINT ["/entrypoint.sh" ]
93
101
CMD ["-c" , "import subprocess; \
94
- subprocess.run(['/home/ubuntu/ omron/.venv/bin/python3', '/home/ubuntu /omron/neurons/miner.py', '--help']); \
95
- subprocess.run(['/home/ubuntu/ omron/.venv/bin/python3', '/home/ubuntu /omron/neurons/validator.py', '--help']);" \
102
+ subprocess.run(['/opt/ omron/.venv/bin/python3', '/opt /omron/neurons/miner.py', '--help']); \
103
+ subprocess.run(['/opt/ omron/.venv/bin/python3', '/opt /omron/neurons/validator.py', '--help']);" \
96
104
]
97
105
# Axon server
98
106
EXPOSE 8091/tcp
0 commit comments