Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
445 lines (386 loc) · 30.7 KB
/
Copy pathDockerfile
File metadata and controls
445 lines (386 loc) · 30.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
# WebHarbor — slim, self-contained image.
# 153 Flask mirror sites + control plane on :8101.
FROM python:3.12-slim-bookworm@sha256:782412e85d0f0984994c290652577d4018aff08145c85b262bb63dc0c7522254
ENV PYTHONUNBUFFERED=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1 \
PIP_NO_CACHE_DIR=1 \
LANG=C.UTF-8
COPY requirements.lock /opt/requirements.lock
RUN pip3 install --no-cache-dir --require-hashes -r /opt/requirements.lock
WORKDIR /opt/WebSyn
# Sites tree. Build context must contain the heavy assets (instance_seed/,
# static/images/, static/external_cache/) — either commit them locally or
# run scripts/fetch_assets.sh to pull them from Hugging Face first.
COPY sites/ /opt/WebSyn/
COPY scripts/check_asset_inventory.py /opt/check_asset_inventory.py
COPY .assets-revision /opt/.assets-revision
COPY assets-manifest.json /opt/assets-manifest.json
COPY scripts/asset_state.py /opt/asset_state.py
COPY scripts/check_seed_databases.py /opt/check_seed_databases.py
RUN python3 /opt/asset_state.py verify /opt/WebSyn /opt/.assets-revision /opt/assets-manifest.json && \
python3 /opt/WebSyn/espn/check_added_assets.py && \
python3 /opt/WebSyn/google_flights/check_airline_assets.py
# IKEA's seed is reproducibly materialized from the tracked source catalog so code-only content fixes do not require an asset-repository write. Product images still come from the pinned asset bundle.
RUN cd /opt/WebSyn/ikea && PYTHONHASHSEED=0 python seed_data.py && rm -rf instance
# Apply tracked, idempotent data corrections to downloaded seed assets.
RUN cd /opt/WebSyn/phys_org && PYTHONHASHSEED=0 python migrate_seed.py && rm -rf instance
RUN cd /opt/WebSyn/target && PYTHONHASHSEED=0 python migrate_seed.py && rm -rf instance
RUN cd /opt/WebSyn/ted && PYTHONHASHSEED=0 python migrate_seed.py && rm -rf instance
# Compass keeps source-backed media in the pinned asset bundle and rebuilds
# its versioned deterministic SQLite seed from tracked source documents.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/compass
RUN cd /opt/WebSyn/compass && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python migrate_seed.py && rm -rf instance
# Walmart Careers validates source-backed media and rebuilds its deterministic SQLite seed from tracked source data.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/walmart_careers && \
python3 /opt/WebSyn/walmart_careers/check_tracked_assets.py
RUN cd /opt/WebSyn/walmart_careers && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance
# FedEx validates its downloaded homepage media against the tracked inventory and
# rebuilds its deterministic, version-marked SQLite seed from tracked source data.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/fedex
RUN cd /opt/WebSyn/fedex && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance
# WebMD Doctor's generated avatars / posters come from the pinned asset bundle,
# while its SQLite seed is rebuilt deterministically from tracked source code.
# The inventory gate enforces exact coverage + per-file SHA-256 + PNG decode of
# all 317 generated images (same contract as the compass / walmart inventories).
RUN python3 /opt/WebSyn/webmd_doctor/check_generated_assets.py
RUN cd /opt/WebSyn/webmd_doctor && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance __pycache__
# Repair captured arXiv titles before this database becomes the reset seed.
RUN python3 /opt/WebSyn/arxiv/migrate_seed.py
# Healthline's downloaded seed carries tracked corrections (image reassignment) and the
# pinned archive bundles unreferenced images; apply the deterministic migration and prune
# the unreferenced files before they are shipped.
RUN cd /opt/WebSyn/healthline && test -f instance_seed/healthline.db && \
PYTHONHASHSEED=0 python3 migrate_seed.py && \
python3 prune_unreferenced_images.py --apply && rm -rf instance
# Versus ships source-backed entity imagery from the pinned asset bundle.
# The generic gate enforces exact coverage, hashes, source URLs and WebP headers.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/versus
# The seed remains code-generated; the benchmark password hash is frozen so the
# SQLite output is byte-identical on every build.
RUN cd /opt/WebSyn/versus && \
rm -rf instance instance_seed && \
mkdir -p instance_seed && \
python3 -c "from app import app" && \
cp instance/versus.db instance_seed/versus.db && \
rm -rf instance __pycache__
# Berkeley's generated imagery ships in the pinned asset bundle while its SQLite
# seed stays build-generated from tracked source — see .build-generated-seed. The
# inventory gate enforces exact coverage + per-file SHA-256 + decode at the planned
# dimensions of all 164 generated images (82 FLUX scenes + 82 Pillow avatars), the
# same contract as the webmd_doctor / compass / walmart_careers inventories.
RUN python3 /opt/WebSyn/berkeley/check_generated_assets.py
# No wall clock and no random salt reaches a row, so the artifact is
# byte-reproducible; websyn_start.sh copies it into instance/ at boot.
RUN cd /opt/WebSyn/berkeley && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance
# Petfinder generates its reset seed from tracked application data.
RUN cd /opt/WebSyn/petfinder && rm -rf instance instance_seed && \
mkdir -p instance_seed && python3 -c "from app import app" && \
cp instance/petfinder.db instance_seed/petfinder.db && rm -rf instance
# AKC ships source-backed imagery and its reviewed frozen SQLite seed.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/akc && \
cd /opt/WebSyn/akc && test -f instance_seed/akc.db && rm -rf instance
COPY websyn_start.sh /opt/websyn_start.sh
COPY control_server.py /opt/control_server.py
COPY site_runner.py /opt/site_runner.py
RUN sed -i 's/\r$//' /opt/websyn_start.sh && chmod +x /opt/websyn_start.sh
# OSU's real-site image bundle is required, while its database is generated
# deterministically from tracked source data.
RUN test -n "$(ls -A /opt/WebSyn/osu/static/images)"
RUN cd /opt/WebSyn/osu && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 migrate_seed.py && rm -rf instance
# Rotten Tomatoes keeps source-backed media in the asset bundle and rebuilds
# its deterministic SQLite seed from tracked, validated source documents.
RUN test -n "$(ls -A /opt/WebSyn/rotten_tomatoes/static/images)" && \
test -n "$(ls -A /opt/WebSyn/rotten_tomatoes/static/external_cache)"
RUN cd /opt/WebSyn/rotten_tomatoes && rm -rf instance instance_seed && python3 -c "\
import app; \
import os, shutil; \
os.makedirs('instance_seed', exist_ok=True); \
shutil.copy2('instance/rotten_tomatoes.db', 'instance_seed/rotten_tomatoes.db'); \
print('Rotten Tomatoes seed DB generated at build time.')" && rm -rf /opt/WebSyn/rotten_tomatoes/instance
# B&H's asset bundle contains images; generate the reset seed from its tracked
# catalog in the image so a fresh checkout needs no locally prepared database.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/bh_photo
RUN cd /opt/WebSyn/bh_photo && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 -c "\
import app; \
import os, shutil; \
os.makedirs('instance_seed', exist_ok=True); \
shutil.copy2('instance/bh_photo.db', 'instance_seed/bh_photo.db'); \
print('B&H Photo seed DB generated at build time.')" && rm -rf instance
# AccuWeather uses genuine captured UI assets and freezes its deterministic seed.
RUN test -n "$(ls -A /opt/WebSyn/accuweather/static/images)" && \
cd /opt/WebSyn/accuweather && rm -rf instance instance_seed && python3 -c "\
import app; \
import os, shutil; \
os.makedirs('instance_seed', exist_ok=True); \
shutil.copy2('instance/accuweather.db', 'instance_seed/accuweather.db'); \
print('AccuWeather seed DB generated at build time.')" && rm -rf /opt/WebSyn/accuweather/instance
# Upgrade the pinned Recreation.gov seed before it becomes the reset fixture.
RUN cd /opt/WebSyn/recreation_gov && python3 migrate_seed.py
# Keep the downloaded BabyCenter seed aligned with tracked source corrections.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/babycenter && \
python3 /opt/WebSyn/babycenter/migrate_seed.py
# Verify every Cookpad source-backed image before shipping the pinned seed.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/cookpad
# Craigslist ships its reviewed seed and authentic listing photos/provenance.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/craigslist && \
cd /opt/WebSyn/craigslist && python3 -c "import app" && rm -rf instance
# Drugs.com: verify source-backed DailyMed assets and generate the deterministic seed.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/drugs_com && \
cd /opt/WebSyn/drugs_com && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance
# Y Combinator ships upstream-sourced media in the pinned asset bundle and
# rebuilds its deterministic SQLite seed from the tracked source_data.json.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/y_combinator
RUN cd /opt/WebSyn/y_combinator && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance
# Adopt-a-Pet builds its synthetic catalog; representative photos come from HF.
RUN test -n "$(ls -A /opt/WebSyn/adopt_a_pet/static/images)" && \
cd /opt/WebSyn/adopt_a_pet && rm -rf instance instance_seed && python3 -c "\
import app; \
import os, shutil; \
os.makedirs('instance_seed', exist_ok=True); \
shutil.copy2('instance/adopt_a_pet.db', 'instance_seed/adopt_a_pet.db'); \
print('Adopt-a-Pet seed DB generated at build time.')" && rm -rf /opt/WebSyn/adopt_a_pet/instance
# Preserve the downloaded MEGA archive and migrate its seed at build time.
RUN cd /opt/WebSyn/mega && python3 migrate_seed.py
# Preserve the original 4shared archive and add deterministic rename history.
RUN cd /opt/WebSyn/4shared && python3 migrate_seed.py
# Preserve the 9GAG archive; curated benchmark stories have no matching source photos.
RUN cd /opt/WebSyn/9gag && python3 migrate_seed.py
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/better_business_bureau
RUN cd /opt/WebSyn/better_business_bureau && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 -c "import app" && \
python3 canonicalize_seed.py && \
mkdir -p instance_seed && \
cp instance/better_business_bureau.db instance_seed/better_business_bureau.db && \
rm -rf instance __pycache__ && \
echo "Better Business Bureau seed DB generated at build time."
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/american_express && \
cd /opt/WebSyn/american_express && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 -c "import app; import os, shutil; \
os.makedirs('instance_seed', exist_ok=True); \
shutil.copy2('instance/american_express.db', 'instance_seed/american_express.db'); \
print('American Express seed DB generated at build time.')" && \
rm -rf instance
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/chase
RUN test -n "$(ls -A /opt/WebSyn/chase/static/images)" && \
test -f /opt/WebSyn/chase/.build-generated-seed
RUN cd /opt/WebSyn/chase && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/flightaware
RUN test -n "$(ls -A /opt/WebSyn/flightaware/static/images)" && \
test -f /opt/WebSyn/flightaware/.build-generated-seed
RUN cd /opt/WebSyn/flightaware && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/chronicle_jobs
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/dillards && \
cd /opt/WebSyn/dillards && rm -rf instance instance_seed && \
WEBSYN_SKIP_BOOTSTRAP=1 PYTHONHASHSEED=0 python3 seed_data.py && \
rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/google_shopping
RUN test -n "$(ls -A /opt/WebSyn/google_shopping/static/images)" && \
test -f /opt/WebSyn/google_shopping/.build-generated-seed
RUN cd /opt/WebSyn/google_shopping && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/imgur
# Imgur's seed is rebuilt deterministically from the tracked source snapshot
# (PYTHONHASHSEED=0, frozen reference date; see .build-generated-seed); its real
# upstream imagery ships via the pinned asset bundle.
RUN cd /opt/WebSyn/imgur && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/imgur.db instance_seed/imgur.db && \
rm -rf instance __pycache__
# Fail closed after all registered-site seed migrations/generators.
RUN cd /opt/WebSyn/youtube && python3 build_seed.py
RUN cd /opt/WebSyn/weather && python3 build_seed.py
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/instructure
RUN cd /opt/WebSyn/instructure && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/instructure.db instance_seed/instructure.db && \
rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/league_of_legends && \
cd /opt/WebSyn/league_of_legends && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__
# Fail closed after all registered-site seed migrations/generators.
RUN cd /opt/WebSyn/youtube && python3 build_seed.py
RUN cd /opt/WebSyn/weather && python3 build_seed.py
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/macys_wine_shop && \
cd /opt/WebSyn/macys_wine_shop && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/jcpenney && \
cd /opt/WebSyn/jcpenney && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/landwatch && \
cd /opt/WebSyn/landwatch && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/medicare_gov && \
cd /opt/WebSyn/medicare_gov && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/marriott
RUN cd /opt/WebSyn/marriott && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
rm -rf instance __pycache__
# megabus: deterministic seed from tracked source snapshots + asset gate.
RUN python3 /opt/check_asset_inventory.py /opt/WebSyn/megabus
# Group seed checks to stay below the container storage layer-depth limit.
RUN ( cd /opt/WebSyn/megabus && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/megabus.db instance_seed/megabus.db && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/michaels ) && \
( cd /opt/WebSyn/michaels && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/michaels.db instance_seed/michaels.db && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/micro_center ) && \
( python3 /opt/WebSyn/micro_center/migrate_seed.py ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/ohiomeansjobs ) && \
( cd /opt/WebSyn/ohiomeansjobs && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ instance_build ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/ohio_gov )
RUN ( cd /opt/WebSyn/ohio_gov && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/nfl ) && \
( cd /opt/WebSyn/nfl && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/mta ) && \
( cd /opt/WebSyn/mta && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/public_storage ) && \
( cd /opt/WebSyn/public_storage && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/raising_canes )
RUN ( cd /opt/WebSyn/raising_canes && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/raising_canes.db instance_seed/raising_canes.db && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/re_max ) && \
( cd /opt/WebSyn/re_max && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/re_max.db instance_seed/re_max.db && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/parkers ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/ryanair ) && \
( cd /opt/WebSyn/ryanair && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/ryanair.db instance_seed/ryanair.db && \
rm -rf instance __pycache__ ) && \
( cd /opt/WebSyn/chess_com && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/porsche )
RUN ( cd /opt/WebSyn/porsche && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/qatar_airways ) && \
( cd /opt/WebSyn/qatar_airways && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/qatar_airways.db instance_seed/qatar_airways.db && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/soundcloud ) && \
( cd /opt/WebSyn/soundcloud && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/speedo ) && \
( cd /opt/WebSyn/speedo && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && \
mkdir -p instance_seed && cp instance/speedo.db instance_seed/speedo.db && \
rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/sourceforge )
RUN ( cd /opt/WebSyn/sourceforge && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/stubhub ) && \
( cd /opt/WebSyn/stubhub && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/spothero ) && \
( cd /opt/WebSyn/spothero && rm -rf instance instance_seed && \
PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__ ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/student_com && \
(cd /opt/WebSyn/student_com && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/statista && \
(cd /opt/WebSyn/statista && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/thumbtack && \
(cd /opt/WebSyn/thumbtack && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/thumbtack.db instance_seed/thumbtack.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/ticketmaster && \
(cd /opt/WebSyn/ticketmaster && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/ticketmaster.db instance_seed/ticketmaster.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/trip_com && \
(cd /opt/WebSyn/trip_com && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/trip_com.db instance_seed/trip_com.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/the_weather_network && \
(cd /opt/WebSyn/the_weather_network && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/the_weather_network.db instance_seed/the_weather_network.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/super_lawyers && \
(cd /opt/WebSyn/super_lawyers && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 -c 'import app' && mkdir -p instance_seed && cp instance/super_lawyers.db instance_seed/super_lawyers.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/tourradar && \
(cd /opt/WebSyn/tourradar && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/tourradar.db instance_seed/tourradar.db && rm -rf instance __pycache__) ) && \
( python3 /opt/WebSyn/smartasset/migrate_seed.py ) && \
( python3 /opt/WebSyn/fandom/migrate_seed.py )
RUN ( python3 /opt/check_asset_inventory.py /opt/WebSyn/us_doj ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/cvs && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/u_s_customs && \
(cd /opt/WebSyn/u_s_customs && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/u_s_customs.db instance_seed/u_s_customs.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/ups && \
(cd /opt/WebSyn/ups && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/ups.db instance_seed/ups.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/united_airlines && \
(cd /opt/WebSyn/united_airlines && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/united_airlines.db instance_seed/united_airlines.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/us_appliance && \
(cd /opt/WebSyn/us_appliance && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/us_appliance.db instance_seed/us_appliance.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/uscis && \
(cd /opt/WebSyn/uscis && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/uscis.db instance_seed/uscis.db && rm -rf instance __pycache__) && \
python3 /opt/check_asset_inventory.py /opt/WebSyn/tumblr && \
(cd /opt/WebSyn/tumblr && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/tumblr.db instance_seed/tumblr.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/zara && \
(cd /opt/WebSyn/zara && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/zara.db instance_seed/zara.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/usps && \
(cd /opt/WebSyn/usps && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/usps.db instance_seed/usps.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/wanderlog && \
(cd /opt/WebSyn/wanderlog && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/wanderlog.db instance_seed/wanderlog.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/virginia_dmv && \
(cd /opt/WebSyn/virginia_dmv && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/virginia_dmv.db instance_seed/virginia_dmv.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/verizon && \
(cd /opt/WebSyn/verizon && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/verizon.db instance_seed/verizon.db && rm -rf instance __pycache__) )
RUN ( python3 /opt/check_asset_inventory.py /opt/WebSyn/ziprecruiter && \
(cd /opt/WebSyn/ziprecruiter && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/ziprecruiter.db instance_seed/ziprecruiter.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/carvana && \
(cd /opt/WebSyn/carvana && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/carvana.db instance_seed/carvana.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/coinmarketcap && \
(cd /opt/WebSyn/coinmarketcap && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/coinmarketcap.db instance_seed/coinmarketcap.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/cars_com && \
(cd /opt/WebSyn/cars_com && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/cars_com.db instance_seed/cars_com.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/airbnb && \
(cd /opt/WebSyn/airbnb && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/airbnb.db instance_seed/airbnb.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/backcountry && \
(cd /opt/WebSyn/backcountry && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/backcountry.db instance_seed/backcountry.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/disney && \
(cd /opt/WebSyn/disney && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/disney.db instance_seed/disney.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/iclr && \
(cd /opt/WebSyn/iclr && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/iclr.db instance_seed/iclr.db && rm -rf instance __pycache__) )
RUN ( python3 /opt/check_asset_inventory.py /opt/WebSyn/red_bull && \
(cd /opt/WebSyn/red_bull && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/red_bull.db instance_seed/red_bull.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/dblp && \
(cd /opt/WebSyn/dblp && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/dblp.db instance_seed/dblp.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/microsoft_azure && \
(cd /opt/WebSyn/microsoft_azure && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/microsoft_azure.db instance_seed/microsoft_azure.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/fox_sports && \
(cd /opt/WebSyn/fox_sports && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/fox_sports.db instance_seed/fox_sports.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/samsung && \
(cd /opt/WebSyn/samsung && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/samsung.db instance_seed/samsung.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/nyse && \
(cd /opt/WebSyn/nyse && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/nyse.db instance_seed/nyse.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/university_of_michigan && \
(cd /opt/WebSyn/university_of_michigan && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/university_of_michigan.db instance_seed/university_of_michigan.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/stanford_university && \
(cd /opt/WebSyn/stanford_university && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/stanford_university.db instance_seed/stanford_university.db && rm -rf instance __pycache__) )
RUN ( python3 /opt/check_asset_inventory.py /opt/WebSyn/yahoo_finance && \
(cd /opt/WebSyn/yahoo_finance && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/yahoo_finance.db instance_seed/yahoo_finance.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/steam && \
(cd /opt/WebSyn/steam && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/steam.db instance_seed/steam.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/trader_joes && \
(cd /opt/WebSyn/trader_joes && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/trader_joes.db instance_seed/trader_joes.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_asset_inventory.py /opt/WebSyn/sec && \
(cd /opt/WebSyn/sec && rm -rf instance instance_seed && PYTHONHASHSEED=0 python3 seed_data.py && mkdir -p instance_seed && cp instance/sec.db instance_seed/sec.db && rm -rf instance __pycache__) ) && \
( python3 /opt/check_seed_databases.py /opt/WebSyn )
EXPOSE 8101 40000-40152
CMD ["/opt/websyn_start.sh"]