Use the Python script instead of the bash script.

This commit is contained in:
Alexander Kharitonov
2022-04-06 12:08:50 +03:00
parent 7b6cae7517
commit fbe10684c1
3 changed files with 63 additions and 4 deletions

View File

@@ -2,13 +2,13 @@ FROM python
EXPOSE 3141 EXPOSE 3141
RUN apt update && apt upgrade -y RUN apt update && apt upgrade -y
RUN useradd -d /home/devpisrv -m -s /bin/bash -U devpisrv RUN useradd -d /home/devpisrv -m -s /bin/bash -U devpisrv
RUN mkdir -p -m 750 /var/local/devpisrv && mkdir -m 750 /var/local/devpisrv/server && mkdir /var/local/devpisrv/install && chown -R devpisrv:devpisrv /var/local/devpisrv RUN mkdir -p -m 750 /var/local/devpisrv && mkdir -m 750 /var/local/devpisrv/server && mkdir /var/local/devpisrv/config && chown -R devpisrv:devpisrv /var/local/devpisrv
COPY --chown=devpisrv:devpisrv .env* /var/local/devpisrv/install/ COPY --chown=devpisrv:devpisrv .env* /var/local/devpisrv/config/
COPY requirements.txt /tmp/ COPY requirements.txt /tmp/
USER devpisrv:devpisrv USER devpisrv:devpisrv
RUN pip3 install -U pip RUN pip3 install -U pip
ENV PATH="/home/devpisrv/.local/bin:${PATH}" ENV PATH="/home/devpisrv/.local/bin:${PATH}"
RUN pip install -U -r /tmp/requirements.txt RUN pip install -U -r /tmp/requirements.txt
COPY src/devpisrv.sh /usr/local/bin/ COPY src/devpisrv.py /usr/local/bin/
ENTRYPOINT ["devpisrv.sh"] ENTRYPOINT ["devpisrv.py"]

View File

@@ -1,3 +1,5 @@
devpi-server>=6.5.0 devpi-server>=6.5.0
devpi-web>=4.0.8 devpi-web>=4.0.8
devpi-client>=5.2.3 devpi-client>=5.2.3
python-dotenv>=0.20.0
PyYAML>=6.0

57
src/devpisrv.py Executable file
View File

@@ -0,0 +1,57 @@
#!/usr/bin/env python3
import argparse
import os.path
import subprocess
from dotenv import dotenv_values
import yaml
arg_parser = argparse.ArgumentParser(description="The script for start devpi-server")
arg_parser.add_argument(
'-d',
'--data-dir',
type=str,
default = '/var/local/devpisrv',
help = 'Path to the data directory'
)
args = arg_parser.parse_args()
server_dir = os.path.join(args.data_dir, "server")
config_dir = os.path.join(args.data_dir, "config")
env_file = os.path.join(config_dir, ".env")
config_file = os.path.join(config_dir, "devpi.conf")
if not os.path.exists(config_file):
config_data = {
'devpi-server': {
'serverdir': os.path.abspath(server_dir),
'host': '0.0.0.0',
'restrict-modify': 'root'
}
}
if os.path.isfile(env_file):
env_config_values = dotenv_values(env_file)
if 'ROOT_PASSWORD' in env_config_values.keys():
config_data['devpi-server']['root-passwd'] = \
env_config_values['ROOT_PASSWORD']
with open(config_file, 'w') as file:
yaml.dump(config_data, file)
if not os.path.exists(os.path.join(server_dir, ".nodeinfo")):
subprocess.run(
args=[
'devpi-init',
'--serverdir', server_dir,
'--configfile', config_file
],
check=True
)
subprocess.run(
args=[
'devpi-server',
'--configfile', config_file
],
check=True
)