Skip to content

Commit d220a5e

Browse files
authored
Fix container startup (#2110)
* Fix container startup * Fix env_replace to prevent overwriting existing environment variables * Change path of default env files in entrypoint.sh * Add common.ini generation to entrypoint.sh * Remove main command from entrypoint.sh and use Dockerfile CMD * Add logging to debug tests * Add logging to debug tests * Add logging to debug tests * Add logging to debug tests * Make the override of environment variable a parameter of env_replace script
1 parent 529d4b4 commit d220a5e

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ config/docker
2121
.coverage
2222
coverage.xml
2323
/config/env.local
24+
project.tar

docker/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,6 @@ RUN chown -R root:root /var/www \
3636
&& pip install .
3737

3838
EXPOSE 8080
39+
ENTRYPOINT ["./docker/scripts/entrypoint.sh"]
40+
3941
CMD ["gunicorn", "--paste", "production.ini", "-u", "www-data", "-g", "www-data", "-b", ":8080"]

docker/scripts/entrypoint.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
./scripts/env_replace config/env.default --keep-env .env < production.ini.in > production.ini
6+
./scripts/env_replace config/env.default --keep-env .env < common.ini.in > common.ini
7+
8+
exec "$@"

scripts/env_replace

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ import sys
44
from dotenv import load_dotenv
55

66
if __name__ == "__main__":
7+
override_env = True
8+
if "--keep-env" in sys.argv:
9+
override_env = False
10+
sys.argv.remove("--keep-env")
11+
712
if len(sys.argv) < 2:
8-
print("Usage: {} env_file1 env_file2 ...".format(sys.argv[0]))
13+
print("Usage: {} [--override-env] env_file1 env_file2 ...".format(sys.argv[0]))
914
sys.exit(1)
1015

1116
env_files = sys.argv[1:]
1217

1318
for env_file in env_files:
14-
load_dotenv(env_file, override=True)
19+
load_dotenv(env_file, override=override_env)
1520

1621
env = dict(**os.environ)
1722
# Because on Windows, environment variables are upper cased by default

0 commit comments

Comments
 (0)