mirror of
https://github.com/askh/pypimirror.git
synced 2026-01-26 08:39:45 +00:00
Use the Python script instead of the bash script.
This commit is contained in:
@@ -2,13 +2,13 @@ FROM python
|
||||
EXPOSE 3141
|
||||
RUN apt update && apt upgrade -y
|
||||
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
|
||||
COPY --chown=devpisrv:devpisrv .env* /var/local/devpisrv/install/
|
||||
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/config/
|
||||
COPY requirements.txt /tmp/
|
||||
USER devpisrv:devpisrv
|
||||
RUN pip3 install -U pip
|
||||
ENV PATH="/home/devpisrv/.local/bin:${PATH}"
|
||||
RUN pip install -U -r /tmp/requirements.txt
|
||||
COPY src/devpisrv.sh /usr/local/bin/
|
||||
ENTRYPOINT ["devpisrv.sh"]
|
||||
COPY src/devpisrv.py /usr/local/bin/
|
||||
ENTRYPOINT ["devpisrv.py"]
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
devpi-server>=6.5.0
|
||||
devpi-web>=4.0.8
|
||||
devpi-client>=5.2.3
|
||||
python-dotenv>=0.20.0
|
||||
PyYAML>=6.0
|
||||
|
||||
57
src/devpisrv.py
Executable file
57
src/devpisrv.py
Executable 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
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user